用惯了tensorflow的小伙伴肯定都用过tensorboard工具吧。虽然Facebook也推出了visdom,但是在一次不小心误触clear之后,我放弃了这个工具(页面的一个clear按钮我本来是想按save的……它们俩一左一右,脑子一热按错了,点击之后clear之后不知道怎么找回曲线数据,真的崩溃)

说回pytorch使用tensorboard吧……

  1. 首先是安装。

    pip install tensorboardX

    这东西虽然是给pytorch用的,但是其实还是走的tensorboard那一套东西,所以你的环境里还需要有tensorflow。(cpu、gpu版本不限,随手装一个就好了)

  2. 调用
    from tensorboardX import SummaryWriter

    使用的就是SummaryWriter这个类。简单的使用可以直接使用SummaryWriter实例

    # before train
    log_writer = SummaryWriter('log_file_path') # in training
    log_writer.add_scalar('Train/Loss', loss.data[0], niter)
    # in pytorch1.0 loss.data[0] should be loss.item()

    如果你不仅仅是需要记录一个loss这么简单,也可以对SummaryWriter做一个封装。

    class Tacotron2Logger(SummaryWriter):
    def __init__(self, logdir):
    super(Tacotron2Logger, self).__init__(logdir) def log_training(self, reduced_loss, grad_norm, learning_rate, duration,
    iteration):
    self.add_scalar("training.loss", reduced_loss, iteration)
    self.add_scalar("grad.norm", grad_norm, iteration)
    self.add_scalar("learning.rate", learning_rate, iteration)
    self.add_scalar("duration", duration, iteration) def log_validation(self, reduced_loss, model, y, y_pred, iteration):
    self.add_scalar("validation.loss", reduced_loss, iteration)
    _, mel_outputs, gate_outputs, alignments = y_pred
    mel_targets, gate_targets = y # plot distribution of parameters
    for tag, value in model.named_parameters():
    tag = tag.replace('.', '/')
    self.add_histogram(tag, value.data.cpu().numpy(), iteration) # plot alignment, mel target and predicted, gate target and predicted
    idx = random.randint(0, alignments.size(0) - 1)
    self.add_image(
    "alignment",
    plot_alignment_to_numpy(alignments[idx].data.cpu().numpy().T),
    iteration)
    self.add_image(
    "mel_target",
    plot_spectrogram_to_numpy(mel_targets[idx].data.cpu().numpy()),
    iteration)
    self.add_image(
    "mel_predicted",
    plot_spectrogram_to_numpy(mel_outputs[idx].data.cpu().numpy()),
    iteration)
    self.add_image(
    "gate",
    plot_gate_outputs_to_numpy(
    gate_targets[idx].data.cpu().numpy(),
    F.sigmoid(gate_outputs[idx]).data.cpu().numpy()),
    iteration)

    这段代码是从NVIDIA tacotron2中摘取过来的。使用和前面一样,只不过把类名改一下就是了,调用的时候,按照你自己定义的类函数去调用就好了。基本功能还是都在的,画图画曲线什么的。没有visdom花里胡哨就是了。

    log_writer = Tacotron2Logger('log_file_path')
    
    log_writer.log_training(self, reduced_loss, grad_norm, learning_rate, duration, iteration)

    这样封装后,就不会在train的代码里很凌乱了。

  3. 网页查看,这个就回到tensorboard一样的操作了。
    tensorboard --logdir=./log_file_path --port=
    # log_file_path 是初始化log_writer时候的那个参数地址。
    # 这里端口号可以随意改,默认是6006。
  4. 然后命令行会告诉你在浏览器输入 ip:8765进行查看,这个和tensorboard一样了就。

pytorch 如何使用tensorboard实时查看曲线---- tensorboardX简介的更多相关文章

  1. linux下打开、关闭tomcat,实时查看tomcat运行日志

    启动:一般是执行sh tomcat/bin/startup.sh 停止:一般是执行sh tomcat/bin/shutdown.sh脚本命令 查看:执行ps -ef |grep tomcat 输出如下 ...

  2. 怎么实时查看mysql当前连接数

    如何实时查看mysql当前连接数? 如何实时查看mysql当前连接数? .查看当前所有连接的详细资料: ./mysqladmin -uadmin -p -h10. processlist .只查看当前 ...

  3. linux下重启tomcat、实时查看tomcat运行日志

    在Linux系统下,重启Tomcat使用命令操作的! 首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh 查看 ...

  4. [原]使用MessageAnalyzer实时查看远端日志

    1. 下载安装Message Analyzer 从Message Analyzer下载链接下载,安装过程从略. 说明:关于Message Analyzer的视频教程,可以在打开后的主界面上看到. 2. ...

  5. Linux 下实时查看日志

    Linux 下实时查看日志 cat /var/log/*.log 如果日志在更新,如何实时查看 tail -f /var/log/messages 还可以使用 watch -d -n 1 cat /v ...

  6. 通过Xshell登录远程服务器实时查看log日志

    主要想总结以下几点: 1.如何使用生成密钥的方式来登录Xshell连接远端服务器 2.在远程服务器上如何上传和下载文件(下载log文件到本地) 3.如何实时查看log,提取错误信息 一.  使用生成密 ...

  7. MySQL连接数实时查看

      MySQL连接数实时查看 1.查看当前所有连接详细信息,只显示10个 2.查看连接状态 箭头所指的地方一般最重要,表示当前的连接数有多少个 3.查看所有连接的详细信息 4.实时查看连接详细信息 这 ...

  8. django框架 - 实时查看执行的sql语句

    django框架采用的ORM模型,我们可以通过mysql的日志记录实时看到执行的sql语句,具体步骤如下: 第一步:找到mysql的配置文件 第二步:编辑mysql配置文件 第三步:重启mysql 第 ...

  9. linux下实时查看tomcat运行日志 2017.12.4

    1.先切换到:cd usr/local/tomcat5/logs 2.tail -f catalina.out 3.这样运行时就可以实时查看运行日志了

随机推荐

  1. 【转】iOS - SQLite 数据库存储

    本文目录 1.SQLite 数据库 2.iOS 自带 SQLite 的使用 3.fmdb 的使用 4.fmdb 多线程操作 5.其他 SQLite 的第三方封装库 回到顶部 1.SQLite 数据库 ...

  2. redis 使用案例

    1.使用redis消息列队发布信息 在一些用户创造用户的应用中(如SNS,微博),可能出现1秒有上千万个用户同时发布消息的情况,此时如果使用mysql可能出现‘too many connections ...

  3. hive遇到的问题以及解决办法

    hive java.lang.ClassNotFoundException: Class org.apache.hive.hcatalog.data.JsonSerDe not found hadoo ...

  4. 新浪微博资深大牛全方位剖析 iOS 高级面试

    第1章 课程简介本章对这门课程所讲述内容进行概要介绍,其中包括课程目标.适合人群,课程特色.课程收获.课程安排等.整个课程学习完结后,有机会获得电话模拟面试及内推. 1-1 课前必读(不看会错过一个亿 ...

  5. 单链表(c语言实现)贼详细

    直接上代码吧 #include<stdio.h> #include<malloc.h> /* 单链表特点: 它是一种动态的储存结构,链表中每个节点占用的储存空间不是预先分配的, ...

  6. L2-014. 列车调度

    L2-014. 列车调度 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 火车站的列车调度铁轨的结构如下图所示. Figure ...

  7. mac下安装phalcon

    PHP版本:7.1.16 1. 安装 brew tap tigerstrikemedia/homebrew-phalconphp brew install php71-phalcon 2.配置php. ...

  8. Delphi在Android下使用Java库

    本文将以Android的USB串口通讯库为例,介绍Delphi如何在Android中使用Java的库. USB串口通讯库地址: https://github.com/felHR85/UsbSerial ...

  9. Delphi - SPcomm 控件使用

    Com口函数 自动获取Com口,函数列表 procedure EnumComPorts(Ports: TStrings); //自动获取com口函数 var KeyHandle: HKEY; ErrC ...

  10. Ubuntu:未找到合法的活动链接

    编辑/etc/NetworkManager/NetworkManager.conf,将managed=false改成managed=true 然后重启. 在桌面环境下,用gedit会出现无法保存的问题 ...