python - 类型错误 : tensor is not a torch image

标签 python pytorch

在 Udacity 学习 AI 类(class)时,我在迁移学习部分遇到了这个错误。这是似乎引起问题的代码:

import torch
from torch import nn
from torch import optim
import torch.nn.functional as F
from torchvision import datasets, transforms, models

data_dir = 'filename'

# TODO: Define transforms for the training data and testing data
train_transforms= transforms.Compose([transforms.Resize((224,224)), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), transforms.ToTensor()])
test_transforms= transforms.Compose([transforms.Resize((224,224)), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), transforms.ToTensor()])

# Pass transforms in here, then run the next cell to see how the transforms look
train_data = datasets.ImageFolder(data_dir + '/train', transform=train_transforms)
test_data = datasets.ImageFolder(data_dir + '/test', transform=test_transforms)

trainloader = torch.utils.data.DataLoader(train_data, batch_size=64, shuffle=True)
testloader = torch.utils.data.DataLoader(test_data, batch_size=32)

最佳答案

问题在于转换的顺序。 ToTensor 转换应该在 Normalize 转换之前进行,因为后者需要张量,但 Resize 转换返回图像。更改错误行的正确代码:

train_transforms = transforms.Compose([
    transforms.Resize((224,224)), 
    transforms.ToTensor(), 
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])
test_transforms = transforms.Compose([
    transforms.Resize((224,224)), 
    transforms.ToTensor(), 
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])

关于python - 类型错误 : tensor is not a torch image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51807040/

相关文章:

time-series - 如何使用 Pytorch 优化 LSTM 中的梯度流?

python - 给定一些索引,如何在索引的 "rest"上索引数组/张量?

python - 批量加载巨大的数据集来训练 pytorch

python - 在ios中使用ecc进行加密

python - 如何解决google colab中的 "No module named '工具''?

python - 适应具有多重继承的非合作父类(super class)

python - Pyinstaller 的综合教程?

python - 从 torch.Tensor 中删除一个元素

python - 使用 NumPy 旋转 5D 立方体

python - Python 函数可以只返回两个值中的第二个吗?