PyTorch(迁移学习实战)

先跑一遍代码再说。理解一下基本的套路。 

1.数据预处理(transforms.Compose函数包含图像数据预处理的方法)

#数据预处理的方
data_transforms = {
    'train': transforms.Compose([
        transforms.Scale(230),
        transforms.CenterCrop(224),
        transforms.RandomHorizontalFlip(),
        transforms.ToTensor(),
        transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
    ]),
    'test': transforms.Compose([
        transforms.Scale(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
    ]),
}
#230 是自适应的缩小到大边长巍峨230的大小;
#224 是采用居中裁减的方式224*224;
#随机水平旋转
#转换从tensor变量

2.数据关联

使用函数datasets.ImageFolder(),第一个参数为数据集的文件夹路径、第二个参数为数据集的预处理方式,也就是上面的;

使用torch.utils.data.DataLoader()来加载数据。

data_directory = 'data'
trainset = datasets.ImageFolder(os.path.join(data_directory, 'train'), data_transforms['train'])
testset  = datasets.ImageFolder(os.path.join(data_directory, 'test'), data_transforms['test'])

trainloader = torch.utils.data.DataLoader(trainset, batch_size=5,shuffle=True, num_workers=4)
testloader  = torch.utils.data.DataLoader(testset, batch_size=5,shuffle=True, num_workers=4)

3.加载alexnex

第一句代表加载经过imagenet数据集训练后的参数

alexnet = models.alexnet(pretrained=True) 

for param in alexnet.parameters():
    param.requires_grad = False 

alexnet.classifier=nn.Sequential(
    nn.Dropout(),
    nn.Linear(256*6*6,4096),
    nn.ReLU(inplace =True),
    nn.Dropout(),
    nn.Linear(4096,4096),
    nn.ReLU(inplace=True),
    nn.Linear(4096,2),)
# 加载经过数据集训练后的数据
# 将参数 re......设置为 False可以限制这些参数更新,便于下面的重新定义,这样就
# 保证只是更新下面定义的内容
# 将最后的输出改成2层

4.看一下alexnet的网络架构

主要分为  features 和classifier ,一个负责卷积,一个负责分类。(注意这里我应经将最后的输出改成2类了)要知道怎么改这个网络参数。

           

5.训练加测试

 

6.将结果显示

      95% 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值