Tensorboard简单应用

通常在神经网络训练中,我们要查看训练过程中的输入图片,于是我们可以使用tensorboard库把图片加载到具体的平台上,然后就可以方便我们阅览,不仅如此,tensorboard还可以帮助我们查看神经网络中训练的情况。

SummaryWriter:

tensorboard中,最为简单,最为基础的就是SummaryWriter类,这个类帮助我们创建一个类对象和一个存放运行日志的文件,记录我们向tensorboard平台上传的图片和曲线。

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("log_of_normal")

首先导包,从torch.utils.tensorboard库里导入SummaryWriter。用SummaryWriter创建一个对象,参数是一个字符串,为存放运行日志的文件夹的名称。在这里用变量writer接收了这个对象,于是你就可以在Pycharm的项目目录下看到你创建了这个文件夹,里面就存放了运行日志。

(这里我的代码其实已经运行了两次,所以会有两次运行日志,新建的文件夹里面是空的,没有运行日志)

add_scalar方法:

其实做的事情就是在平面坐标系下描点罢了,然后tensorboard自动连接,形成一条曲线。

具体操作常伴随for循环:
 

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("log_of_normal")
for i in range(100):
    writer.add_scalar("y = x**2", i*i, i)
writer.close()

可以看到,参数有三个,第一个是图像的名称,一般是自己定下的,第二个是y表达式,第三个是x。

我们运行一次代码,就向tensorboard平台上传了这个曲线,那么接下来就是打开平台查看了。

打开Tensorboard平台:

很简单,有两个渠道。

1.在Pycharm下的终端输入:tensorboard --logdir="log_of_normal"即可

 然后它就会弹出一个网站(蓝色),点击就能进入tensorboard平台。

 点击上方的Scalars就能看到自己描绘的曲线。

有时候,我们可能打开平台比较慢,那么我们需要在Pycharm终端输入的指令增加点内容,原来的tensorboard --logdir="log_of_normal"修改为:tensorboard --logdir="log_of_normal" --port=6007。

这样,我们就避免了和别人共进入一个端口:6006。

add_image方法:

SummaryWriter里面还有一个常用的方法,它就是add_image,它只接收tensor和ndarray类型的图片,不接受PIL类型的图片,然后将这个图片上传到tensorboard平台。

参数具体为:第一个参数是图片集的名称,是一个字符串,设置后,你就可以往这个图片集塞图片,比如说,我设置图片集名称为array,然后每次就能往这个图片集塞若干个图片了。第二个参数是所塞的图片。第三个参数是步数,表示这个图片是在训练第几步时的图片。我们通常用关键字参数dataformat作为第四个参数,这里要求,如果输入的图片是ndarray类型,那么dataformat必须设置为“HWC”。

用cv2读取图片:

上面的讲解过于枯燥?我用cv2读取具体的图片为例,说一说cv2和add_image。

用CV2读取图片,通常使用imread方法,这个方法有一个参数,是图片的绝对地址或者是相对地址。它将会把图片打开为ndarray数据类型。

import cv2
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("log_of_normal")
img1_cv = cv2.imread("dataset of mine/assignment1/train/bees_image/196430254_46bd129ae7.jpg")
writer.add_image("array", img1_cv, 0, dataformat="HWC")
writer.close()

刷新之前的tensorboard平台,在TIME SERIES找到array图片集,得到:

涉及到的总代码:

from torch.utils.tensorboard import SummaryWriter
import cv2
#   使用SummaryWriter
writer = SummaryWriter("log_of_normal")
#   使用SummaryWriter创建一个运行日志
for i in range(100):
    writer.add_scalar("y = x**2", i*i, i)
#   使用add_scalar创建一条曲线

#   cv2读取图片,类型为ndarray
img1_cv = cv2.imread("dataset of mine/assignment1/train/bees_image/196430254_46bd129ae7.jpg")
#   用cv2打开一个ndarray类型的文件,需要以图片的相对地址或者绝对地址作为参数
writer.add_image("array", img1_cv, 0, dataformats="HWC")
#   add_image方法接收tensor或者ndarray数据类型
writer.close()

tensorboard常用的就是SummaryWriter类中的add_scalar和add_image方法,它很简单,但是在神经网络训练中发挥着重要作用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值