[英]AttributeError: 'numpy.ndarray' object has no attribute 'A'
[英]Python - AttributeError: 'numpy.ndarray' object has no attribute 'to'
我现在有如下更新的代码:
# Hyperparameters
random_seed = 123
learning_rate = 0.01
num_epochs = 10
batch_size = 128
device = torch.device("cuda:1" if torch.cuda.is_available() else "cpu")
对于范围内的纪元(num_epochs):模型= resnet34.train()对于batch_idx,枚举(train_generator)中的(特征,目标):
features = features.to(device)
targets = targets.to(device)
### FORWARD AND BACK PROP
logits = model(features)
cost = torch.nn.functional.cross_entropy(logits, targets)
optimizer.zero_grad()
cost.backward()
### UPDATE MODEL PARAMETERS
optimizer.step()
### LOGGING
if not batch_idx % 50:
print ('Epoch: %03d/%03d | Batch %03d/%03d | Cost: %.4f'
%(epoch+1, num_epochs, batch_idx,
len(datagen)//batch_size, cost))
model = model.eval() # eval mode to prevent upd. batchnorm params during inference
with torch.set_grad_enabled(False): # save memory during inference
print('Epoch: %03d/%03d training accuracy: %.2f%%' % (
epoch+1, num_epochs,
compute_accuracy(model, train_generator)))
当只有一张图片时,代码运行良好。 但是,当我添加另一个或更多图像时,我得到以下信息:
features = features.to(device)
targets = targets.to(device)
AttributeError: 'numpy.ndarray' object has no attribute 'to'
为了清楚起见,很高兴看到您的train_generator
代码,但它似乎不是火炬DataLoader
。 在这种情况下,您可能应该手动将数组转换为张量。 有几种方法可以做到这一点:
torch.from_numpy(numpy_array)
- 用于 numpy 数组;torch.as_tensor(list)
- 用于常见列表和元组;torch.tensor(array)
也应该有效,但上述方法将尽可能避免复制数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.