5.8 后续版本改进

5.8.1 可视化训练过程中的损失值

要可视化训练过程中的损失,首先需要将训练过程中的损失值记录在一个列表中,然后调用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 )

使用以下代码进行数据可视化:

plt.plot(loss_list)

5.8.2 TensorBoard可视化代码

要使用TensorBoard进行可视化,首先要在初始化变量前为其做准备,代码如下:

# 设置日志存储目录
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()

Last updated