Pytorch中遇到的一些问题

  1. Q: RuntimeError: invalid argument 2: size ‘[-1 x 3 x 174]’ is invalid for input with 174 elements at /pytorch/torch/lib/TH/THStorage.c:37
if self.reshape:
        base_out = base_out.view((-1, self.num_segments) + base_out.size()[1:])
  ... ...
 x = torch.randn([1,3,224,224])
 x = Variable(x)
 tsn.forward('test',x)

A: 造成这一问题的原因是用于view的tensor的shape是1x174的,而view后的尺寸是-1x3x174的,因此可以用来view的input的维度不够reshape成-1x3x174,因此报错。因为我主要是在TSN的models.py中测试网络结构,所以初始化的x的batch size设置为1了,因此input不够reshape成-1x3x174的尺寸。
2. Q: RuntimeError: matrices expected, got 3D, 3D tensors at /pytorch/torch/lib/TH/generic/THTensorMath.c:1429
A:出现这一错误的原因是利用mm将两个高维矩阵相乘了,对于高维矩阵的乘积,应当将其改为用matmul相乘。
3. Q: TypeError: argument 0 is not a Variable
A: 造成这一问题的原因在于我使用的pytorch版本是0.3.1,在将input数据送入module中前应将tensor包装为Variable类型,否则就会报错,但是之后的版本合并了tensor和variable,所以解决这一问题的方法有两种:升级版本,或将tensor包装成Variable。参考链接
4. Q: RuntimeError: invalid argument 1: input is not contiguous at /pytorch/torch/lib/TH/generic/THTensor.c:231
A: 遇到这个问题一般是使用了view或者index_select函数,
解决方法:
data = data.view(bsz, -1).t().contiguous()#只要在view函数后面再加个contiguous()就ok
5. Missing key(s) in state_dict、Unexpected key(s) in state_dict解决
解决办法:
参考:https://www.cnblogs.com/zhengbiqing/p/10434704.html在这里插入图片描述
6. RuntimeError: “binary_cross_entropy” not implemented for ‘Long’
解释:换成其他的损失函数都是这个错误,所以排除了是由于最后一层的输入导致的问题,报错的解释是没有该损失函数不能用于Long类型,所以逐一排查了output和target的类型,但是利用type()函数显示二者的类型都显示为torch.tensor
解决办法:目前暂未发现更好的办法,测试时发现当输入为单独的一个整数时,torch.FloatTensor()函数的输出为空,并且始终报错信息提示传入的数据类型为Long,所以在将output和label送入loss函数之前,人为进行了数据类型的转换,先将tensor类型转换为numpy类型,再转换成list类型,最后再利用torch.FloatTensor()函数转换即可。
未完待续。。。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值