调试代码——报错记录2

①报错:ImportError: cannot import name '_new_empty_tensor' from 'torchvision.ops' (D:\python\lib\site-packages\torchvision\ops\__init__.py)

找到报错位置:

import torchvision
if float(torchvision.__version__[:3]) < 0.7:
    from torchvision.ops import _new_empty_tensor
    from torchvision.ops.misc import _output_size

利用print(torchvision.__version__)查看Torchvision版本

import torchvision
print(torchvision.__version__)

结果显示:

0.10.0+cu111

float(torchvision.__version__[:3])代码只检查前3个字符,因此它认为我的版本是0.1,故出现报错。

查找资料可注释掉相关的代码即可,这样做需要仔细查看但代码比较麻烦,想到一个办法,即将代码改成:

import torchvision
if float(torchvision.__version__[2:4]) < 7:
    from torchvision.ops import _new_empty_tensor
    from torchvision.ops.misc import _output_size

成功解决ImportError: cannot import name '_new_empty_tensor' from 'torchvision.ops' (D:\python\lib\site-packages\torchvision\ops\__init__.py)

②报错:RuntimeError: CUDA out of memory. Tried to allocate XXX MiB

减小batchsize即可

    parser.add_argument('--batch_size', default=1, type=int, help='default=16')
    parser.add_argument('--weight_decay', default=1e-4, type=float)
    parser.add_argument('--epochs', default=90, type=int)

③报错:OSError: [WinError 1455] 页面文件太小,无法完成操作。

把num_workers设置为0,num_workers是工作进程数,一般这个数量设置值是自己电脑/服务器的CPU核心数。

修改batch_size的值

④报错:RuntimeError: 'lengths' argument should be a 1D CPU int64 tensor, but got 1D cuda:0 Long tensor

  File "D:\python\lib\site-packages\torch\nn\utils\rnn.py", line 249, in pack_padded_sequence
    _VF._pack_padded_sequence(input, lengths, batch_first)
RuntimeError: 'lengths' argument should be a 1D CPU int64 tensor, but got 1D cuda:0 Long tensor

找到报错的行:

data, batch_sizes = \
        _VF._pack_padded_sequence(input, lengths, batch_first)
    return _packed_sequence_init(data, batch_sizes, sorted_indices, None)

修改后:

data, batch_sizes = \
        _VF._pack_padded_sequence(input, lengths.cpu(), batch_first)
    return _packed_sequence_init(data, batch_sizes, sorted_indices, None)

原因:Pytorch1.5以上版本升级了Bi-LSTM导致的。

⑤报错:RuntimeError: input.size(-1) must be equal to input_size. Expected 300, got 96

在配置文件里修改一下

⑥报错:RuntimeError: Found dtype Double but expected Float

⑦报错:RuntimeError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 2.00 GiB total capacity; 1.02 GiB already allocated; 6.88 MiB free; 1.03 GiB reserved in total by PyTorch)

找到报错位置:

         for layer in self.layers:
              output = layer(output, src_mask=mask,
                       src_key_padding_mask=src_key_padding_mask, pos=pos)

插入代码 with torch.no_grad()(目的是该段程序不计算参数梯度)

修改后:

        with torch.no_grad():
            for layer in self.layers:
                output = layer(output, src_mask=mask,
                          src_key_padding_mask=src_key_padding_mask, pos=pos)

运行过程:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老板来根肠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值