购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5-2 TensorBoard

TensorBoard是一种可视化的诊断工具,功能非常强大,可以显示模型结构、训练过程,显示包括图片、文字和音频数据。在训练的过程中启动TensorBoard,能够实时观看训练过程。TensorBoard虽是Tensorflow团队开发的,但PyTorch也极力推荐使用,因此,若未安装Tensorflow,可独立安装TensorBoard,指令如下:

pip install tensorboard

5-2-1 TensorBoard功能

TensorBoard包含下列功能。

(1)追踪损失和准确率等效能衡量指标(Metrics),并以可视化呈现。

(2)显示运算图(Computational Graph):包括张量运算(tensor operation)和神经层(layers)。

(3)直方图(Histogram):显示训练过程中的权重(weights)、偏差(bias)的概率分配。

(4)词嵌入(Word Embedding)展示:把词嵌入向量降维,投影到三维空间来显示。画面右边可输入任意单词,例如King,就会出现下图,将与其相近的单词显示出来,原理是通过词向量(Word2Vec)将每个单词转为向量,再利用Cosine_Similarity计算相似性,详情会在后续章节介绍。

(5)显示图片、文字和音频数据。

5-2-2 测试

首先在程序中必须将信息写入工作记录文件(Log),之后,可以启动TensorBoard观看工作记录文件(Log),我们直接以范例展示。

范例1.先介绍写入工作记录文件的API,包括影像、语音均可写入,甚至嵌入(Embedding)向量(后续章节说明)。

下列程序代码请参考【05_04_TensorBoard.ipynb】。

(1)载入套件。

(2)使用内建数据集FashionMNIST,建立transform、trainset、trainloader,设定批量=4。

(3)设定log目录,开启log文件。

(4)写入图片。

(5)这时可先启动TensorBoard,观看执行结果。单击“IMAGES”标签,如果没有出现标签,可至下拉式菜单单击,出现4张图像。

启动TensorBoard:需指定Log目录,如下。

tensorboard --logdir=runs

也可以在Jupyter Notebook启动:先加载TensorBoard notebook扩充程序(Extension),即可在Jupyter notebook启动TensorBoard。

%load_ext tensorboard

%tensorboard --logdir=runs

启动后即可使用网页浏览器观看:http://localhost:6006/。

(6)语音也可以写入Log,要注意下列事项:

需另外安装套件,以支持语音处理,Windows操作系统要安装PySoundFile,Linux操作系统则要安装sox。

使用DataLoader,要读取一批多笔语音数据时,要注意每一笔数据要等长,否则next指令会出错,故常设定batch_size=1。

语音写入Log,要加参数采样率(sample_rate),否则播放会变异音:writer.add_audio('audio', waveform, sample_rate=sample_rate)。

(7)下载语音数据集:multiprocessing.Process可平行下载yes/no内建数据集。

(8)语音写入Log:含播放语音。

(9)使用TensorBoard,单击“GRAPHS”标签,观看执行结果,可单击“Play”(三角形符号)播放语音,每个文件有8个音频。

(10)若使用DataLoader将语音写入Log,程序代码如下。

(11)将语音写入Log:注意需加[0],因next()回传的是数组。

(12)模型也可以写入Log:先建立模型。

(13)写入模型:第一个参数为模型对象,第二个参数为模型输入。

(14)使用TensorBoard,单击“GRAPHS”标签,观看执行结果。

双击(Double click) Net方块,可看到详细模型结构。

双击(Double click) input/output方块,可看到输入/输出规格。

(15)显示嵌入向量投影机(Projector):将影像转换为向量,连同类别名称一并写入Log。不过,指令writer.add_embedding会发生错误,需先用下列指令修正。

(16)随机抽样100笔数据,转为二维向量,写入Log。

单击“PROJECTOR”标签,观看执行结果:可看到相同类别的影像会聚集在一起。

(17)最后记得将缓冲区清空,并关闭Log。

范例2.记录训练过程的损失:以MNIST辨识作测试,前面加载数据与建立模型程序代码的流程不变,在训练时将步骤序号及损失写入Log。以下仅列出关键的程序代码。

下列程序代码请参考【05_06_手写阿拉伯数字辨识_TensorBoard.ipynb】。

(1)训练时将步骤序号( n )及损失(loss)写入Log。writer.add_scalar可写入单一变数,第一个参数为变量名称,第二个参数为变数值。

(2)启动TensorBoard:tensorboard --logdir=runs_2。

(3)启动后即可单击“SCALARS”标签,使用网页浏览器观看:http://localhost:6006/。

TensorBoard随着时间增加的功能越来越多,以上我们只做了很简单的试验,如果需要更详细的信息,可以参阅TensorBoard官网的指南 [7]

TensorFlow与TensorBoard完全整合,不过PyTorch并没有提供所有的功能。 qgfmXgSWgH/CHqo6ZtXHrAfFn7g2Q6SZtDcWFu57xmVXsL5bgThk3h0hnlAZ/Kyd

点击中间区域
呼出菜单
上一章
目录
下一章
×