要可视化训练过程中的损失,首先需要将训练过程中的损失值记录在一个列表中,然后调用matplot对损失值进行可视化显示,具体是在进行模型的迭代训练时添加一个loss_list,对每轮训练后的Loss平均值进行存储,或者是每步(单个样本)训练后都添加这个Loss值到loss_list。具体改动如下:
loss_list = [] # 用于保存loss值的列表
for epoch in range (train_epochs):
loss_sum = 0.0
for xs, ys in zip(x_data, y_data):
xs = xs.reshape(1,12)
ys = ys.reshape(1,1)
_, loss = sess.run([optimizer,loss_function], feed_dict={x: xs, y: ys})
loss_sum = loss_sum + loss
#loss_list.append(loss) # 每步添加一次
# 打乱数据顺序
x_data, y_data = shuffle(x_data, y_data)
b0temp=b.eval(session=sess)
w0temp=w.eval(session=sess)
loss_average = loss_sum/len(y_data)
loss_list.append(loss) # 每轮添加一次
print("epoch=", epoch+1,"loss=", loss_average,"b=", b0temp,"w=", w0temp )
# 设置日志存储目录
logdir='d:/log'
# 将计算图存为单独的记录文件
tf.train.write_graph(sess.graph,logdir,'graph.pbtxt')
# 创建记录损失值loss的标量,后面在TensorBoard中SCALARS栏可见
sum_loss_op = tf.summary.scalar("loss", loss_function)
# 把所有需要记录日志的合并,方便一次性写入
merged = tf.summary.merge_all()