我试图训练一个代码,但我得到了这个错误。下面是我的代码:
for i in range(num_iter):
# Forward pass to get logits
logits = self(images)
# Calculate loss
loss = self.criterion(logits, masks)
# Zero gradients
self.optim.zero_grad()
# Backward pass to compute gradients
loss.backward()
images = images.detach()
images = torch.tensor(images, dtype=torch.float32, requires_grad=True)
# Get the gradients of the loss w.r.t. the input image
data_grad = images.grad.data
# Generate the perturbed image using FGSM
perturbed_images = fgsm(images, epsilon, data_grad)
# Re-classify the perturbed image
logits_perturbed = self(perturbed_images)
代码只是整个代码的一部分。
我看到的错误是:
File "/home/xx/xx/xx.py", line 73, in training_step
data_grad = images.grad.data
AttributeError: 'NoneType' object has no attribute 'data'
尝试训练模型,期望它训练得很好,但它不起作用。
1条答案
按热度按时间ctehm74n1#
当第一次创建Tensor
require_grad=True
时,它的梯度初始值将是None
,这会导致在尝试访问其数据属性时出现属性错误。因此,您应该执行以下操作:首先创建可训练的图像,并将其传递给模型,如下所示