单纯的在屏幕上打印数据不够直观
VisualDL就很好的解决了这个问题
本篇以Scalar打点数据展示为例
先上效果图

损失指标
流程简介

1、打开VisualDL官方文档
http://visualdl.paddlepaddle.org/documentation/visualdl/zh/develop/getting_started/introduction_cn.html
不难看出VisualDL支持的可视化类型还是很多的







2、安装VisualDL
直接使用pip安装即可,若使用Pycharm则在包管理器中搜索visualdl。

3、定义VisualDL日志文件
logw = visualdl.LogWriter("g:/log/main_log", sync_cycle=10)
第一个参数为日志保存路径,这里为了方便起见使用了绝对路径,第二个参数为指定多少次写操作后才从内存写入到硬盘日志文件,越大越占用内存,越小则越占用硬盘IO。
4、定义标签
with logw.mode('train') as logger:
trainTag = logger.scalar("损失指标")#训练损失的标签 对应效果图的“train”
with logw.mode('test') as logger:
testTag = logger.scalar("损失指标")#测试损失的标签 对应效果图的“test”
此处的logw.mode('train')则定义了标签名称,以至于trainTag则为下方输入数据做准备
5、输入数据
因为损失数据的输出是在训练中产生的,所以进入到训练循环中将trainTag的数据添加进来。
# 定义损失函数
cost = fluid.layers.cross_entropy(input=net, label=label)
avg_cost = fluid.layers.mean(cost)
acc = fluid.layers.accuracy(input=net, label=label, k=1)
# 定义优化方法
sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.01)
sgd_optimizer.minimize(avg_cost)
# 数据传入设置
batch_reader = paddle.batch(reader=dataReader(), batch_size=1024)
testb_reader = paddle.batch(reader=testReader(), batch_size=1024)
feeder = fluid.DataFeeder(place=place, feed_list=[x, label])
prog = fluid.default_startup_program()
exe.run(prog)
#训练主循环
trainNum = 50
for i in range(trainNum):
for batch_id, data in enumerate(batch_reader()):
outs = exe.run(
feed=feeder.feed(data),
fetch_list=[label, avg_cost]) # feed为数据表 输入数据和标签数据
trainTag.add_record(i, outs[1])#输入数据
trainTag.add_record(i, outs[1])中第一个参数是step,相当于效果图中的X坐标,第二个参数为Y坐标,这里的outs[1]是avg_cost的数据,当作Y坐标对了。
接下来开始训练!
6、在终端中运行VisualDL

输入
visualDL --logdir 日志文件路径 --port 指定端口号 --host 指定IP地址(可选)例:
visualDL --logdir g:/log/main_log --port 8080 --host 127.0.0.10如果没有使用Pycharm的话可以使用cmd或终端进入Python目录下的Scripts目录执行该语句即可

7、打开浏览器,进入刚刚设置的地址

可以看到数据已经已图标的形式展现了
