简介:
tensorboard是一个查看神经网络模型的可视化工具,功能强大,还可以查看训练的准确率、损失等。
1.tensorboard看tfevents文件
根据这个网址的最后部分,我们训练得出来的ckpt.meta文件或是pb文件可以通过下面2、3小节的那两个py代码转成tfevents文件,然后用tensorboard可视化。
打开cmd,然后通过cd命令到达你的工程目录下,之后输入:
tensorboard --logdir=training:你的tfevents路径\
这个training:可以去掉,如果你去掉后打得开tensorboard的话。
注意这里除了tensorboard和--logdir之间允许有空格之外,其他地方不允许有空格,比如你这样写:
tensorboard --logdir = log(假如你的tfevents在log文件夹下),就会无法读取。
FAQ:为什么要到达你的工程目录下?因为cmd是默认在c盘打开,而调用tensorboard要求你的cmd当前所在路径与tfevents文件在同一个磁盘上。而且输入你的tfevents路径时最好最后带上\符号:,像下面这样可能打不开tensorboard:
tensorboard --logdir=training:F:\log
所以我一般先用dos命令cd转到tfevents的目录后直接:
tensorboard --logdir=training:./
也可以不写等于号,即写为:
tensorboard --logdir training:你的tfevents路径\
然后你的命令行窗口会输出一个网址:http://localhost:6006
复制后在浏览器中打开,看到报错:No scalar data was found,点击GRAPH那一栏就可以了。
如果网址无法打开的话,点击这个SCALARS按钮。
2.ckpt.meta和pb文件转log后用tensorboard可视化
2.1可视化ckpt.meta文件
2.1.1使用这个tensorboard_read_meta.py代码从ckpt.meta文件中恢复计算图
import tensorflow as tf
from tensorflow.python.platform import gfile
#这是从文件格式的meta文件加载模型,然后生成events.out.tfevents在log目录下。就是把训练成的模型结构以图的形式保存,可以用tensorboard
# 来查看
graph = tf.get_default_graph()
graphdef = graph.as_graph_def()
# graphdef.ParseFromString(gfile.FastGFile("/data/TensorFlowAndroidMNIST/app/src/main/expert-graph.pb", "rb").read())
# _ = tf.import_graph_def(graphdef, name="")
_ = tf.train.import_meta_graph("./quickdraw_model/model.ckpt-100000.meta")
summary_write = tf.summary.FileWriter("./log", graph)
2.1.2命令行运行里执行
tensorboard --logdir log/ #这里的路径就是1中最后一行图保存的路径,请根据自己的需要更改
2.1.3 在浏览器输入:http://localhost:6006/
打开后,记得点击GRAPHS按钮,否则页面一直停留在SCALA:
2.2可视化pb文件法1
2.2.1从pb文件中恢复计算图
import tensorflow as tf
model = 'model.pb' #请将这里的pb文件路径改为自己的
graph = tf.get_default_graph()
graph_def = graph.as_graph_def()
graph_def.ParseFromString(tf.gfile.FastGFile(model, 'rb').read())
tf.import_graph_def(graph_def, name='graph')
summaryWriter = tf.summary.FileWriter('log/', graph)
2.2.2命令行运行里执行
tensorboard --logdir log/ #这里的路径就是1中最后一行图保存的路径,请根据自己的需要更改
2.3可视化pb文件法2
利用tools里面的import_pb_to_tensorboard.py工具
#命令行
python -m tensorflow.python.tools.import_pb_to_tensorboard \
--model_dir="your_path/model.pb"
--log_dir="your_log_path"
tensorboard --logdir="your_log_path"
或者
#python3
from tensorflow.python.tools.import_pb_to_tensorboard import import_to_tensorboard
model = os.path.join(model_dir, 'tensorflow_inception_graph.pb')
import_to_tensorboard(model_dir=model, log_dir='log/')
#命令行
tensorboard --logdir="your_log_path"
2.2.3 网页端启动tensorboard同 2.1.3
3.keras代码中生成events.out.tfevents训练过程文件
# 这个是用来保存训练的最好的模型的:
checkpointer = ModelCheckpoint(filepath='{}.h5'.format(model_name), verbose=1, save_best_only=True, save_weights_only=False)
# 这个是保存训练过程准确率、损失,模型结构的,然后用tensorboard可视化:
tensorboard = TensorBoard(log_dir='logs/{}'.format(model_name))
callbacks_list = [checkpointer, tensorboard]
# save_weights_only=False就会保存整个模型,这个模型可以加载后预测、继续训练都可以。只保存权重,用相同网络结构加载后只能继续训练
history = model.fit([train_pairs[:, 0], train_pairs[:, 1]], tr_y,
batch_size=1,
epochs=configs.epoch, verbose=2, # verbose=2表示每个eproch都输出信息
validation_data=([val_pairs[:, 0], val_pairs[:, 1]], val_y),
callbacks=callbacks_list) # 训练时调用上面那两个监测器。
4.tensorboard使用:
把训练结果分文件夹,tensorboard还可以加载多个tfevents然后比较
tensorboard --logdir=F:\Projects\my_slipt_net_Bottle\logs\
我的目录:
同时比较:
5.K折交叉验证时,使用tensorboard
当你做k折验证,tensorboard里显示的曲线是很乱的。
因为你的横轴以step为单位,每做完一次验证,训练迭代epoch又从零开始:
所以需要转换维RELATIVE或WALL:
6.tensorboard讲解
https://www.cnblogs.com/yifdu25/p/8270849.html