如何解决计算损失时出错 - 不支持的操作数类型 -:'tuple' 和 'tuple'
我正在尝试使用以下代码计算损失
class MSE_gradient(nn.Module):
def __init__(self):
super(MSE_gradient,self).__init__()
def forward(self,inputs,targets):
diff = torch.gradient(inputs) - torch.gradient(targets)
return torch.sum(diff*diff)/diff.numel()
但我收到错误
6 def forward(self,targets):
----> 7 diff = torch.gradient(inputs) - torch.gradient(targets)
8 return torch.sum(diff*diff)/diff.numel()
TypeError: unsupported operand type(s) for -: 'tuple' and 'tuple'
我正在尝试计算图像的梯度并找到它的 MSE 误差。请帮忙
解决方法
torch.gradient
输出一个元组,如您所见,您不能从另一个元素中减去一个元组,因此出现错误。
用 diff = torch.gradient(inputs) - torch.gradient(targets)
代替
diff = []
for a,b in zip (torch.gradient(inputs),torch.gradient(targets)):
diff.append(a-b)
# if you need tuple,cast diff as tuple
diff = tuple(diff)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。