文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
开始训练
需要重头开始训练的话把保存的权重文件删除
每训练 1000 次输出一次特征图
训练完一轮就保存一次权重
训练 40 个 epoch
def draw_train_process(iters,accs,loss):
'''
训练可视化
'''
plt.title('cat to classes12 ',fontsize=24)
plt.xlabel('iters',fontsize=20)
plt.ylabel('acc/loss',fontsize=20)
plt.plot(iters,accs,color='red',label='accuracy')
plt.plot(iters,loss,color='green',label='loss')
plt.legend()
plt.grid()
plt.show()
with fluid.dygraph.guard():
train_loader=data_load(train_paramters['train_image_list'],train_paramters['batch_size'])
model=VGG16net() #实列化模型
if os.path.exists(train_paramters['save_model_name']+'.pdparams'):#存在模型参数则继续训练
print('continue training')
param_dict,_=fluid.dygraph.load_dygraph(train_paramters['save_model_name'])
model.load_dict(param_dict)
model.train()
is_display_feature=False
all_iter=0
all_loss=[]
all_iters=[]
all_accs=[]
opt=fluid.optimizer.SGDOptimizer(learning_rate=0.01,parameter_list=model.parameters())
for pass_num in range(train_paramters['epoch_num']):
for pass_id,data in enumerate(train_loader()):
images,labels = data
images = fluid.dygraph.to_variable(images)
labels = fluid.dygraph.to_variable(labels)
if(all_iter%893==0):
is_display_feature=True
out = model(images,is_display_feature)
is_display_feature=False
else:
out = model(images,is_display_feature)
loss=fluid.layers.cross_entropy(label=labels,input=out)
avg_loss=fluid.layers.mean(loss)
avg_loss.backward()
opt.minimize(avg_loss)
opt.clear_gradients()
all_iter+=1
#每训练完一个 epoch(reader())
acc=fluid.layers.accuracy(input=out,label=labels)
all_loss.append(avg_loss.numpy()[0])
all_iters.append(all_iter)
all_accs.append(acc.numpy()[0])
print('pass_epoch:{},iters:{},loss:{},acc:{}'.format(pass_num,all_iter,avg_loss.numpy()[0],acc.numpy()[0]))
fluid.save_dygraph(model.state_dict(),train_paramters['save_model_name']) #保存模型参数
draw_train_process(all_iters,all_accs,all_loss)
print('finished training')
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
pass_epoch:0,iters:67,loss:2.4799280166625977,acc:0.125
pass_epoch:1,iters:134,loss:2.517878532409668,acc:0.0625
pass_epoch:2,iters:201,loss:2.3678321838378906,acc:0.125
pass_epoch:3,iters:268,loss:2.5074377059936523,acc:0.09375
pass_epoch:4,iters:335,loss:2.395510196685791,acc:0.09375
pass_epoch:5,iters:402,loss:2.3040196895599365,acc:0.3125
pass_epoch:6,iters:469,loss:2.318796157836914,acc:0.15625
pass_epoch:7,iters:536,loss:2.408168077468872,acc:0.1875
pass_epoch:8,iters:603,loss:2.1314830780029297,acc:0.25
pass_epoch:9,iters:670,loss:2.3354663848876953,acc:0.21875
pass_epoch:10,iters:737,loss:2.0989861488342285,acc:0.21875
pass_epoch:11,iters:804,loss:2.01800799369812,acc:0.34375
pass_epoch:12,iters:871,loss:2.064736843109131,acc:0.1875
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
pass_epoch:13,iters:938,loss:1.6188513040542603,acc:0.46875
pass_epoch:14,iters:1005,loss:1.7495455741882324,acc:0.375
pass_epoch:15,iters:1072,loss:2.243290901184082,acc:0.15625
pass_epoch:16,iters:1139,loss:2.2192680835723877,acc:0.25
pass_epoch:17,iters:1206,loss:2.190603733062744,acc:0.25
pass_epoch:18,iters:1273,loss:1.7756171226501465,acc:0.375
pass_epoch:19,iters:1340,loss:2.0200839042663574,acc:0.34375
pass_epoch:20,iters:1407,loss:1.5426690578460693,acc:0.40625
pass_epoch:21,iters:1474,loss:1.4749078750610352,acc:0.5
pass_epoch:22,iters:1541,loss:0.8402727246284485,acc:0.75
pass_epoch:23,iters:1608,loss:1.150139331817627,acc:0.5625
pass_epoch:24,iters:1675,loss:1.0551210641860962,acc:0.53125
pass_epoch:25,iters:1742,loss:1.583927035331726,acc:0.40625
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
pass_epoch:26,iters:1809,loss:1.2691419124603271,acc:0.5
pass_epoch:27,iters:1876,loss:1.7214078903198242,acc:0.5
pass_epoch:28,iters:1943,loss:0.85252845287323,acc:0.71875
pass_epoch:29,iters:2010,loss:1.1482943296432495,acc:0.5625
pass_epoch:30,iters:2077,loss:0.7138460874557495,acc:0.84375
pass_epoch:31,iters:2144,loss:0.30972999334335327,acc:0.875
pass_epoch:32,iters:2211,loss:0.8071508407592773,acc:0.6875
pass_epoch:33,iters:2278,loss:1.2095224857330322,acc:0.71875
pass_epoch:34,iters:2345,loss:0.25210511684417725,acc:0.96875
pass_epoch:35,iters:2412,loss:0.707565188407898,acc:0.6875
pass_epoch:36,iters:2479,loss:0.47325584292411804,acc:0.90625
pass_epoch:37,iters:2546,loss:0.025728696957230568,acc:1.0
pass_epoch:38,iters:2613,loss:0.0027548810467123985,acc:1.0
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
<Figure size 432x288 with 1 Axes>
pass_epoch:39,iters:2680,loss:0.0015298365615308285,acc:1.0
<Figure size 432x288 with 1 Axes>
finished training
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论