曲线部分代码
这篇博客接着上次的plot部分代码写一点
learning curve曲线
接下来我们来详细讲一下learning rate
部分的代码
这张图的主要目的是记录根据每个epoch训练完成之后,Accuary
和Loss
的变化过程,这样能更好的反映模型的训练和调整,更加清楚的看到梯度下降的一步步更新迭代
def epoch_plot(epoch_data, num_of_moudel, config):
step_log_interval = epoch_data['step_log_interval']
train_metric_record = epoch_data['train_metric_record']
train_loss_record = epoch_data['train_loss_record']
step_test_interval = epoch_data['step_test_interval']
test_metric_record = epoch_data['test_metric_record']
test_loss_record = epoch_data['test_loss_record']
首先从函数的接口中获取到我们绘图要用的epochdata
,注意这部分数据是我们在训练的时候对每一步的train和test进行测试的时候保存了记录下来的代码。所以我们直接将每个参数分别赋值给对应的变量即可。
plt.figure(22, figsize=(16, 12))
# f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(figsize=(16, 8), ncols=2, nrows=2)
f, (ax1, ax2) = plt.subplots(figsize=(16, 8), ncols=2)
plt.subplots_adjust(wspace=0.2, hspace=0.3)
ax1.spines['right'].set_visible(False)
ax1.spines['top'].set_visible(False)
ax2.spines['right'].set_visible(False)
ax2.spines['top'].set_visible(False)
# ax3.spines['right'].set_visible(False)
# ax3.spines['top'].set_visible(False)
# ax4.spines['right'].set_visible(False)
# ax4.spines['top'].set_visible(False)
对画图的操作进行一些基本的设定,如设置画布figure
的大小,两张图wspace
和hspace
之间的差距和间隔,还有将整个框子的右上部分全部去除,这样回复到R语言画图的风格中。
colorlocal = colors[int(num_of_moudel)]
for i in range(num_of_moudel):
# ax1.plot(step_log_interval[i], train_metric_record[i], colors = colorlocal[i], label=config['names'][i])
# ax2.plot(step_log_interval[i], train_loss_record[i], colors = colorlocal[i], label=config['names'][i])
test_metric_record_y = util_data.smooth(test_metric_record[i])
test_loss_record_y = util_data.smooth(test_loss_record[i])
ax1