在神经网络训练中,可以利用tensorboard进行查看loss曲线及graph图,但是比较麻烦,本人想在训练代码中加入一段代码,实现train_loss及val_loss的实时动态变化,方便观察损失函数变化来调整网络参数。
本方法亦可用于其他动态曲线显示,实现起来代码比较简单,容易理解

#首先定义了横坐标和总坐标数组
x = []#用于存放横坐标
t_loss = []#用于存放train_loss
v_loss = []#用于存放train_loss
#在此之前需先在迭代中计算出两个loss
#####################################
x.append(epoch * iter + i) #此步为更新迭代步数
t_loss.append(train_loss)
v_loss.append(val_loss)

try:
  train_loss_lines.remove(train_loss_lines[0]) #移除上一步曲线
  val_loss_lines.remove(val_loss_lines[0])
except Exception:
  pass
train_loss_lines = plt.plot(x, t_loss, 'r', lw=5)#lw为曲线宽度
val_loss_lines = plt.plot(x, v_loss, 'b', lw=5)

plt.title("loss")
plt.xlabel("steps")
plt.ylabel("loss")
plt.legend(["train_loss",
            "val_loss"])
plt.pause(0.1) #图片停留0.1s

实现效果如下:
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐