最近在使用u版yolov3训练数据集时,使用多GPU训练时总是报错:

TypeError: Caught TypeError in replica 1 on device 1.
TypeError: forward() missing 1 required positional argument: 'x'

百度了一下发现是因为我使用了多个显卡,导致在inference阶段,模型和数据不在同一个显卡上,所以后面同时报了:

TypeError: forward() missing 1 required positional argument: 'x'

没有数据的错误。

详情参考这篇文章:https://www.cnblogs.com/YouXiangLiThon/p/13361448.html

但百度上面没有查询到解决办法,于是去github上试试有没有相同的问题。结果发现真的有人出现了同样问题,大佬的回答是因为自己的数据集数量不是 batch-size 的整数倍,因此会报错。参考https://github.com/ultralytics/yolov3/issues/1355

于是查看自己的数据集,真的是这个问题,问题解决!

pytorch 使用多GPU训练模型测试出现:TypeError: forward() missing 1 required positional argument: ‘x‘可能解决方法 最近在使用u版yolov3训练数据集时,使用多GPU训练时总是报错: TypeError: Caught TypeError in replica 1 on device 1. TypeError: forward() missing 1 required positional argument: 'x'百度了一下发现是因为我使用了多个显卡,导致在inference阶段,模型和数据不在同一个显卡上,所以后面同时报了:TypeError: forward() missing 1 re... device = torch.device(cuda:0 if torch.cuda.is_available() else cpu)#第一行代码 model.to(device)#第二行代码 首先是上面两行代码放在读取数据之前。 mytensor = my_tensor.to(device)#第三行代码 然后是第三行代码。这句代码的意思是将所有最开始读取数据时的tersor变量copy一份到device所指定的 GPU 上去,之后的运算都在 GPU 上进行。需要注意的是这句话并不像前面的两行代码一样只需要写一遍,第三行代码需要写的次数就等于需要保存到 GPU 上的tensor变量
个人环境为VS2015+opencv4.0,目标为 使用 Net. forward ()实现Mask R-CNN目标检测的前向推断。 出现 的问题为,有些图片能正常检测,有些图片却 出现 CV:Exception(ucrtbase.dll)异常。 随 使用 try catch查找错误: net. forward (outs, outNames); catch (cv::Ex...
File ".\seg_v2\framework.py", line 13, in __init__ self.net = net().cuda() File "C:\Users\Administrator\Anaconda3\lib\site-packages\torch\nn\modules\module.py", line 722, in _c al l_impl result = self. forward (*input, **kwargs) TypeError : forward ()
做三位人体重建的时候,运行时代码报错 TypeError : Caught TypeError in replica 1 on device 1. 这个错误的意思是在程序中分配了一个 gpu , 但运行时给程序两个 gpu ,但是其实我只是在配置文件中规定 使用 gpu :0 因为我的服务器有两张卡,空闲了一张显卡,代码自动调用了它们,然后找了半天错误,最后在代码中将 gpu 设置成一张就行了。 解决 方法 在代码中加入下面两行代码,强制 使用 一块卡即可 import os os.environ['CUDA_VISIBLE_
目录1、数据并行1.1、单 GPU 或者无 GPU 训练的代码如下:1.2、数据并行的多 GPU 训练2、设备并行 本文讲简单的探讨Keras中 使用 GPU 训练的 方法 以及需要注意的地方。有两种 方法 可在多个 GPU 上运行单个模型:数据并行和设备并行(Keras官方建议 使用 TensorFlow 后端)。第一部分讲如何 使用 数据并行的方式 使用 GPU 加速;第二部分给出一个设备并行的例子。 1、数据并行 1.1、...
我在 训练模型 的时候 使用 了nn.DataPar al lel,并在在服务器 gpu 测试 也同时将训练好的模型并行载入,这样没有问题,但是我将训练好的模型在本地cpu运行的时候 出错 。这里记录 出错 的地方,并记录大致流程。 1. CPU读取模型: RuntimeError: Attempting to deseri al ize object on a CUDA device but torch.cuda.is_av...
这个错误提示是在 使用 PyTorch 的神经网络模型时 出现 的。它说明在调用 forward () 函数时,缺少了一个必需的位置参数 "x"。 forward () 函数是用来定义神经网络的前向传递过程的,它需要至少一个输入数据张量,也就是参数 "x"。如果调用 forward () 函数时没有提供参数 "x",就会 出现 这个错误。 解决 方法 是在调用 forward () 函数时,为参数 "x" 传入正确的输入数据张量,确保它与神经网络的输入层匹配。
北风之神c: 总结的很全面,写得赞,博主用心了。 此国产日志 https://nb-log-doc.readthedocs.io/zh_CN/latest 使用原生 loggng封装,兼容性和替换性100%。 1、日志能根据级别能够自动变彩色。 2、print自动变彩色。 3、日志和print在pycahrm控制台的输出都自动可以点击跳转到文件和行号。 4、多进程日志切割安全,文件日志写入性能高 。 5、入参简单,能一键自动记录到多种地方。 相比 loguru 有10胜。 pip install nb_log 。 SIFT特征点提取 不爱吃鱼的酸菜: HALCON初步:算子参数部分三个冒号的意义 MessiGodLike: 谢谢!解开多年的疑惑。 二值图距离变换 MTlove404: (博主后向迭代时有2处小失误,更正如下) //第二遍遍历图像,使用右模板更新像素值 (按从下到上,从右到左的顺序) for (int i = m - 2; i > 0; i--) uchar* BWRow1 = BW.ptr<uchar>(i); for (int j = n - 2; j > 0; j--) // 1 2 3 // 4 p 6 // 7 8 9 /** 9 **/ Dist = calcBlockDistance(i, j, i + 1, j + 1); uchar* BWRow2 = BW.ptr<uchar>(i + 1); fDist = min((float)BWRow1[j], Dist + BWRow2[j + 1]); /** 8 **/ Dist = calcBlockDistance(i, j, i + 1, j); fDist = min(fDist, Dist + BWRow2[j]); /** 6 **/ BWRow2 = BW.ptr<uchar>(i); Dist = calcBlockDistance(i, j, i, j + 1); fDist = min(fDist, Dist + BWRow2[j + 1]); /** 3 **/ BWRow2 = BW.ptr<uchar>(i - 1); Dist = calcBlockDistance(i, j, i - 1, j + 1); fDist = min(fDist, Dist + BWRow2[j + 1]); BWRow1[j] = (uchar)cvRound(fDist); SIFT特征点提取 weixin_44543051: 讲的太好了