在神经网络训练中,可以利用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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐