我的毕设pytorch工程报错解决之路

这是用于毕设神经的神经网络网络设计过程当中的报错与解决方案记录。

1。 RuntimeError: Input type (torch.cuda.DoubleTensor) and weight type (torch.cuda.FloatTensor)不一致

RuntimeError: Input type (torch.cuda.DoubleTensor) and weight type (torch.cuda.FloatTensor) should be the same.
解决办法:torch.tensor()里注明dtype,见官网。

2。 ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 3 dimension(s) and the array at index 1 has 2 dimension(s)

我的毕设pytorch工程报错解决之路_第1张图片
63行报错了。(上图是已改正的代码)
一定要注意,S[:,:,3]就会缺一个维度,S[:,:,[3]]就不会删掉最后一个维度。

cuda版本11.5我装了torch中cu113的版本,会报错吗?

目前一切正常。

3.返回的loss应该是一个标量(目前大部分深度学习模型应该最后都能得到一个标量损失),对于tensor类型的损失,首先考虑将其累加形成一个标量。

4 .★ 关于预测目标是是较小数量级时的解决办法★

5.由于4中提到的预测目标是是较小数量级(应力、应变),导致loss=Nan.原因:

回顾李宏毅反向传播
C(交叉熵损失)对输出y的导数*输出y对z的导数(z通过激活函数得到y)=C对z的导数。
z对w的导数=输入该层的值a
由于a=激活函数(z)
a对上一层z的导数也可知。
原因是由于初始输出和标签相差过大,详见上面4的链接

6 维度不一致

RuntimeError: The size of tensor a (11) must match the size of tensor b (20) at non-singleton dimension 3
总之就是进行运算的两个张量某个维度的长度不一样会报这个错误。再仔细检查下程序确保它们一样,这个错误就可解决。
用到的技术:
torch.permute

7

File "D:\my_codeworkspace\bishe_new\jiaoben\KINNfromMAE.py", line 48, in forward
    qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)
RuntimeError: shape '[10, 101, 3, 6, 10]' is invalid for input of size 193920

解决办法

8第二次出现Nan: metric为infinite或Nan

症状和解决

你可能感兴趣的:(pytorch,深度学习,人工智能)