ResNet50使用预训练参数和从零开始训练的异同

您所在的位置:网站首页 net50官方文档 ResNet50使用预训练参数和从零开始训练的异同

ResNet50使用预训练参数和从零开始训练的异同

2023-07-26 16:29| 来源: 网络整理| 查看: 265

本文主要比较在Cifar10数据集上从零开始训练ResNet50网络和使用预训练参数(load imagenet pretrained weight)训练ResNet50网络的异同。

运行环境(在下面的环境中测试通过):

Python = 3.7.9 64bit Paddle GPU = 2.0.1 安装命令:conda install paddlepaddle-gpu==2.0.1 cudatoolkit=10.0 -c paddle OS = Windows10 64bit

测试结果:

比较项 从零开始训练, 手动建模 从零开始训练, 使用模型库 使用预训练参数 Batch size 256 256 256 Epochs 20 20 10 eval_freq 5 5 2 测试数据集上的精度 76.71% 78.08% 88.99% 从零开始训练, 手动建模 从零开始训练, 使用模型库 使用预训练参数,在第一个Epoch就能达到很高的精度了

结论:

若是学生,推荐手动编写ResNet,这样可以加深对模型的理解;虽然有好的轮子,也要自己造一造,通过造轮子来加深对知识的理解。 若是做项目的工程师,推荐使用深度学习框架模型库里面的模型,好处是bugs少。若分类对象跟ImageNet图像类似,可以直接使用预训练参数,这样训练时间少,模型精度高,更加适合工程应用。 工程应用尽量避免造轮子,因为造轮子的过程中大概率会引入bug,还需要花很多时间精力进行调优,最终结果也不如现成的轮子好用。 若有自己的大型数据集和GPU集群,比如:3亿人脸,可以不断优化业务方向上的预训练参数。在业务落地的过程中,高精度的预训练参数,直接影响项目交付的质量和速度。

本项目的范例代码:https://gitee.com/ppov-nuc/resnet_pretrained_demo



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3