返回介绍

开始训练

发布于 2025-02-17 22:41:42 字数 14693 浏览 0 评论 0 收藏 0

需要重头开始训练的话把保存的权重文件删除

每训练 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文