基于对paddle.io和paddle.vision两库的探索,发现他们是支持在paddle2静态图模式(paddle.enable_static())下调用的,因此对paddlehub模型获取,paddle.io数据加载,paddle.vision数据增强进行封装,最终实现用paddle2按照自己的需求训练paddlehub中的静态图。

封装后的训练与测试代码如下所示

#paddlepaddle==2.2
#paddlehub=2.2
import paddle
from utils.Trainer import Trainer,log_print
#构造训练器
trainer=Trainer(input_shape=(256,256),batch_size=32,start_epoch=0,Epochs=200)
#设置学习率调度器,在迁移学习中动态调整学习率记为重要
#scheduler = paddle.optimizer.lr.CosineAnnealingDecay(learning_rate=0.001, T_max=10, verbose=True)
scheduler = paddle.optimizer.lr.ReduceOnPlateau(learning_rate=0.001, factor=0.7, patience=5, verbose=False)
#设置program信息
trainer.init_model(scheduler,model_name="resnet50_vd_animals",class_num=12,use_cuda = True)
#加载以前训练好的静态图
#trainer.load_model("./static_model/ep84_acc_0.9613_loss_0.1884")
#trainer.init_

更多推荐

paddlepaddle 17 迁移学习-图像分类实战四 基于paddle2(paddlehub2)实现静态图的训练与测试