pytorch训练中出现的错误汇集

错误一: 

 File "D:\anaconda3\envs\PyTorch\lib\site-packages\torch\nn\modules\rnn.py", line 559, in forward
    max_batch_size = input.size(0) if self.batch_first else input.size(1)
IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)

原因: 输入到torch中的数据必须是三维的tensor。

解决方案:

使用torch.unsqueeze()扩充tensor。我的essay本身是64列的一维tensor,且类型为torch.float64.使用两次扩充达到三维,size为[1,1,64]

essay = torch.unsqueeze(essay,0)
essay = torch.unsqueeze(essay,0)

错误二:

  File "D:\anaconda3\envs\PyTorch\lib\site-packages\torch\nn\modules\rnn.py", line 576, in forward
    result = _VF.lstm(input, hx, self._flat_weights, self.bias, self.num_layers,
RuntimeError: Expected object of scalar type Double but got scalar type Float for argument #3 'mat2' in call to _th_addmm_out

原因: 输入到torch中的数据必须是三维torch.float32的tensor

解决方案:在输入到网络之前,将torch.float64类型转化为torch.float32

essay = torch.tensor(essay,dtype=torch.float32)

 错误三、四代码为:

        label = torch.tensor([label], dtype=torch.long)    #int型标签转化为一维tensor
        output = rnn(essay)
        # output = output.squeeze(0)
        loss = loss_fun(output,label)

错误三:

 File "D:\anaconda3\envs\PyTorch\lib\site-packages\torch\nn\functional.py", line 2214, in nll_loss
    if input.size(0) != target.size(0):
AttributeError: 'int' object has no attribute 'size'

原因: 交叉熵函数是的输入是模型打分结果与实际标签。

解决方案:在rnn最后一层增加softmax()

        softmax = nn.Softmax(dim=2)
        out = softmax(out)

错误四:

  File "D:\anaconda3\envs\PyTorch\lib\site-packages\torch\nn\functional.py", line 2227, in nll_loss
    raise ValueError('Expected target size {}, got {}'.format(
ValueError: Expected target size (1, 64), got torch.Size([1])

原因:期望输入为2维,结果输入为1维

解决方案:将三维降至2维。

output = output.squeeze(0)

 

Traceback (most recent call last): File "E:\yolov5-master\train.py", line 642, in <module> main(opt) File "E:\yolov5-master\train.py", line 531, in main train(opt.hyp, opt, device, callbacks) File "E:\yolov5-master\train.py", line 312, in train pred = model(imgs) # forward File "F:\conda\envs\yolov5\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl return forward_call(*args, **kwargs) File "E:\yolov5-master\models\yolo.py", line 209, in forward return self._forward_once(x, profile, visualize) # single-scale inference, train File "E:\yolov5-master\models\yolo.py", line 121, in _forward_once x = m(x) # run File "F:\conda\envs\yolov5\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl return forward_call(*args, **kwargs) File "E:\yolov5-master\models\common.py", line 167, in forward return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), 1)) File "F:\conda\envs\yolov5\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl return forward_call(*args, **kwargs) File "F:\conda\envs\yolov5\lib\site-packages\torch\nn\modules\container.py", line 217, in forward input = module(input) File "F:\conda\envs\yolov5\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl return forward_call(*args, **kwargs) File "E:\yolov5-master\models\common.py", line 120, in forward return x + self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x)) File "F:\conda\envs\yolov5\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl return forward_call(*args, **kwargs) File "E:\yolov5-master\models\common.py", line 56, in forward return self.act(self.bn(self.conv(x))) File "F:\conda\envs\yolov5\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl return forward_call(*args, **kwargs) File "F:\conda\envs\yolov5\lib\site-packages\torch\nn\modules\activation.py", line 396, in forward return F.silu(input, inplace=self.inplace) File "F:\conda\envs\yolov5\lib\site-packages\torch\nn\functional.py", line 2058, in silu return torch._C._nn.silu_(input) torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 16.00 MiB (GPU 0; 6.00 GiB total capacity; 2.92 GiB already allocated; 951.00 MiB free; 3.01 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
06-11
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值