作者回复: 👍🏻👍🏻 ^^
作者回复: 你好,感谢你的留言。 如果保证输入一样,正常不会这样的。 你检查检查你的预处理的resize是不是会随机切割。 还是不行的话,可以把你的代码发给我看看。
作者回复: hi。 CIFAR10的图片比较小,猫和狗、鹿和马比较像,一部分图片预测错误是可以接受的。可以在下面尝试1之后,用验证集评估一下模型精确与召回,看看是否为一个可接受的结果,如果是的话,那部分图片分错是没问题的。 可以做如下尝试: 1. 把train=Fasle改为True。我为了讲解方便直接使用验证集训练的。 cifar10_dataset = torchvision.datasets.CIFAR10(root='./data', train=False, transform=transform, target_transform=None, download=True) 2. 把学习率调小一点试试。^^
作者回复: 你好,感谢你的留言。 输出5不是正确的吗? cifar10里dog就是5啊
作者回复: 你好,刘利,感谢留言。 就只训练全连接层了。 finetune的时候会根据你的分类任务,新加一个全连接层(而不是使用原模型的)
作者回复: 你好,马克图布,感谢你的留言。 对,内置了Softmax。 均值[0.485, 0.456, 0.406],标准差[0.229, 0.224, 0.225] 是ImageNet的均值与标准差。torchvision中的模型都是在ImageNet上训练的。
作者回复: 抱歉,回复的太迟了。本质上没有太大区别。 但optimizer可以优化多个模型的参数。alexnet. zero_grad()指定只对alexnet的梯度进行清零。 例如,下面的代码。 # 创建多个模型 model1 = torch.nn.Linear(10, 5) model2 = torch.nn.Linear(10, 3) # 将模型的参数合并 all_parameters = list(model1.parameters()) + list(model2.parameters()) # 创建优化器,同时优化多个模型的参数 optimizer = optim.SGD(all_parameters, lr=0.01) # 在训练迭代中使用优化器来更新模型参数 for _ in range(num_epochs): optimizer.zero_grad()
作者回复: 你好,因为使用了随机剪裁。 transforms.RandomResizedCrop((224,224))。 并且没有加alexnet.eval()
作者回复: 抱歉,回复迟了。 我执行了你的代码,并没有报错。你提示什么错误呢?
作者回复: 👍🏻