利用Keras调用Tensorboard可视化工具
自己用到tensorboard,记录汇总一下相关的知识点,有不对之处还请指教
Tensorboard详解
TensorBoard可以将训练过程中的各种绘制数据展示出来,包括标量(scalars),图片(images),音频(Audio),计算图(graph),数据分布(distribution),直方图(histograms)和嵌入式向量(embedding)。
- 在 scalars 下可以看到 accuracy,cross entropy,dropout,layer1 和 layer2 的 bias 和 weights 等的趋势;
- 在 images 和 audio 下可以看到输入的数据。展示训练过程中记录的图像和音频;
- 在 graphs 中可以看到模型的结构;
- 在 histogram 可以看到 activations,gradients 或者 weights 等变量的每一步的分布,越靠前面就是越新的步数的结果。展示训练过程中记录的数据的分布图;
- distribution 和 histogram 是两种不同的形式,可以看到整体的状况;
- 在 embedding 中可以看到用 PCA 主成分分析方法将高维数据投影到 3D 空间后的数据的关系;
- Event: 展示训练过程中的统计数据(最值,均值等)变化情况;
keras调用tensorboard官方代码:
keras.callbacks.TensorBoard(log_dir='./logs', histogram_freq=0, batch_size=32, write_graph=True, write_grads=False, write_images=False, embeddings_freq=0, embeddings_layer_names=None, embeddings_metadata=None, embeddings_data=None, update_freq='epoch')
终端调用代码
tensorboard --logdir=./logs
./logs表示当前路径下的子目录logs
该类在存放在keras.callbacks模块中。拥有许多参数,主要的参数如下:
1、log_dir: 用来保存Tensorboard的日志文件等内容的位置
2、histogram_freq: 对于模型中各个层计算激活值和模型权重直方图的频率。
3、write_graph: 是否在 TensorBoard 中可视化图像。
4、write_grads: 是否在 TensorBoard 中可视化梯度值直方图。
5、batch_size: 用以直方图计算的传入神经元网络输入批的大小。
6、write_images: 是否在 TensorBoard中将模型权重以图片可视化。
7、embeddings_freq: 被选中的嵌入层会被保存的频率(在训练轮中)。
8、embeddings_layer_names: 一个列表,会被监测层的名字。 如果是 None 或空列表,那么所有的嵌入层都会被监测。
9、embeddings_metadata: 一个字典,对应层的名字到保存有这个嵌入层元数据文件的名字。 查看 详情 关于元数据的数据格式。 以防同样的元数据被用于所用的嵌入层,字符串可以被传入。
10、embeddings_data: 要嵌入在 embeddings_layer_names 指定的层的数据。 Numpy 数组(如果模型有单个输入)或 Numpy 数组列表(如果模型有多个输入)。
11、update_freq: 常用的三个值为’batch’ 、‘epoch’ 或 整数。当使用 ‘batch’ 时,在每个 batch 之后将损失和评估值写入到 TensorBoard 中。 ‘epoch’ 类似。如果使用整数,会在每一定个样本之后将损失和评估值写入到 TensorBoard 中。
默认值如下:
log_dir='./logs', # 默认保存在当前文件夹下的logs文件夹之下
histogram_freq=0,
batch_size=32,
write_graph=True, #默认是True,默认是显示graph的。
write_grads=False,
write_images=False,
embeddings_freq=0,
embeddings_layer_names=None,
embeddings_metadata=None,
embeddings_data=None,
update_freq='epoch'
我自己的代码
tbCallBack = TensorBoard(log_dir="./log", histogram_freq=1,write_grads=True)history = model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, shuffle=True, verbose=2,validation_split=0.2, callbacks=[tbCallBack])
输入tensorboard --logdir=./logs
点击网址
tensorboard如图
参考
[1]https://blog.csdn.net/JohinieLi/article/details/80070071?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase
[2]:https://blog.csdn.net/qq_27825451/article/details/90229983?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase
[3]:https://blog.csdn.net/zhangpeterx/article/details/90762586
[4]:https://blog.csdn.net/yangfengling1023/article/details/82854923