当迭代 PyTorch 数据加载器时,例如
# define dataset, dataloader
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=64)
# define model, optimizer, loss
# not included - irrelevant to the question
for ii, (inputs, labels) in enumerate(trainloader):
# Move input and label tensors to the GPU
inputs, labels = inputs.to(device), labels.to(device)
start = time.time()
outputs = model.forward(inputs)
loss = criterion(outputs, labels)
loss.backward()
Run Code Online (Sandbox Code Playgroud)
我TypeError: 'list' object is not callable
在这条线上得到了
for ii, (inputs, labels) in enumerate(trainloader):
Run Code Online (Sandbox Code Playgroud)
我忘记了什么愚蠢的事情?
你记得打电话吗transforms.Compose
您的变换列表?
在这一行
train_data = datasets.ImageFolder(data_dir + '/train', transform=train_transforms)
Run Code Online (Sandbox Code Playgroud)
这transform
参数需要一个可调用对象,而不是一个列表。
例如,这是错误的:
train_transforms = [
transforms.RandomResizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])]
Run Code Online (Sandbox Code Playgroud)
它应该看起来像这样
train_transforms = transforms.Compose([
transforms.RandomResizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4293 次 |
最近记录: |