pytorch: AttributeError: 'builtin_function_or_method' object,将dataloader返回值放到cuda再传回到网络结构中出现的问题及解决

将dataloader返回值放到cuda再传回到网络结构中出现的问题及解决

问题描述

题主主要编写了三个文件,datasets.py,models.py,train.py
datasets.py返回五个tensor,四个img和1个label
models.py设计了三个类,一个特征提取类——放在网络的前面,一个分类网络——放到网络的后面,还有一个类,负责将特征提取类,融合策略层以及分类网络整合在一起。

但是,在train.py中,我尝试将loader中的tensor返回,出现了
AttributeError: ‘builtin_function_or_method’ object这种错误,就很奇怪,不用cuda的话,就不会有这个错误。

for down, left, right, upper, label in train_loader:
	down, left, right, upper = down.cuda(), left.cuda, right.cuda(), upper.cuda()
	pred = mynetwork([down, left, right, upper])

解决方法

在train.py中先不将img tensor放到cuda上,在MyNetWork类中将,遍历得到的img tensor再放入cuda里,这样就不会有这种错误了。
类似于下面这种。

  def forward(self, x):
        feats = []
        for loc in x:
            loc=loc.cuda()

2019.12.10
希望能帮到大家。


猜你喜欢

转载自blog.csdn.net/jsk_learner/article/details/103479057