Pytorch完成alexnet迁移学习实践

2022-04-26  本文已影响0人  刘小白DOER

    在构建神经网络时,很少直接随机初始化权重来重新训练一个神经网络,可以使用后预先训练好的神经网络权重来进行初始化。卷积神经网络的卷积层负责提取不同的特征,我们只需要微调全连接层来完成数据量较小的训练任务。

    以下代码基于《Pytorch深度学习入门》中的迁移学习。

1、transforms完成数据预处理使其大小喝颜色与预训练模型一致

    transforms.Resize缩小到最大为230的大小;

    transforms.CenterCrop居中裁剪分割为大小224的图像;

    transforms.RandomHorizontalFlip随机水平翻转;

    transforms.ToTensor()转换为tensor格式;

    transforms.Normalize使用均值喝标准差为0.5的方式进行归一化。

2、datasets.ImageFolder加载本地数据集data_transforms数据预处理

    ImageFolder加载数据集定义目录data,并使用data_transforms完成数据预处理

3、加载alexnet预训练模型并加载训练好的权重

    alexnet = models.alexnet(pretrained=True)

    模型参数如下,卷积神将网络的计算公式为:N=(W-F+2P)/S+1 。

N:输出大小,W:输入大小,F:卷积核大小

P:填充值的大小,S:步长大小

4、重新定义alexnet模型的分类器classifier,完成本地化的二分类寻求,最后全连接层输出2

5、定义train训练函数喝test测试函数

6、训练神经网络

7、在测试集上测试,经过与训练模型后,在小数据集400个图形上的训练预测结果可以达到92%

上一篇 下一篇

猜你喜欢

热点阅读