pytorch 踩坑之旅(1)

pytorh 训练过程的坑

1、报错:input type (CUDAFloatTensor) and weight type (CPUFloatTensor) should be same.

先考虑:模型没有加载到GPU上,解决module.cuda()

其次:

假设网络模型是:在这里插入图片描述
修改为如下:在这里插入图片描述上面的图本身没有语法错误,而且在CPU上也能够正常运行,但是加载到GPU上的时候,在model = model.cuda()的作用下,网络其他部分已经被部署到GPU上,而encoder里面的结构还在cpu上面,所以需要改成下面的格式。经测试下面的结构可以正常运行。

2、runtimeerror:one of variables needed for gradient computation has been modified by an inplace operation…

主要是我在搭建网络架构时,在考虑特征融合时采用add的方式,所以在卷积和BN之后没有直接加relu,而是在进入下一次的卷积的时候才加上了relu,所以不能像之前 nn.ReLU(inplace=True),而是直接nn.ReLU()。

inplace=True

意思是:是否将计算得到的值直接覆盖之前的值

计算结果不会有影响。利用in-place计算可以节省内(显)存,同时还可以省去反复申请和释放内存的时间。但是会对原变量覆盖,只要不带来错误就用。

3、pytorch 反向传播的时候,为了避免不必要的麻烦,不要使用 b = b…这种,

						  例如:a = f(a)            修改为:  b = f(a)
                               a = d(a)                     c = d(b)

也不需要使用:a *= 2等等。直接写a = a *2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值