PyTorch(迁移学习实战)
先跑一遍代码再说。理解一下基本的套路。 1.数据预处理(transforms.Compose函数包含图像数据预处理的方法)#数据预处理的方data_transforms = {'train': transforms.Compose([transforms.Scale(230),transforms.CenterCrop(224),transf...
·
先跑一遍代码再说。理解一下基本的套路。
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%
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)