Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pytork错误:';BiSeNet';对象没有属性';模块';_Python_Neural Network_Pytorch_Image Segmentation_Semantic Segmentation - Fatal编程技术网

Python Pytork错误:';BiSeNet';对象没有属性';模块';

Python Pytork错误:';BiSeNet';对象没有属性';模块';,python,neural-network,pytorch,image-segmentation,semantic-segmentation,Python,Neural Network,Pytorch,Image Segmentation,Semantic Segmentation,我是pytorch的新手,我正在尝试研究BiSeNet用于图像分割(代码取自github repo:)。在训练阶段,经过一些训练阶段后,如果val的结果比以前的好,网络将执行验证和tryes以保存模型的参数。 在最后一次操作中,我在第109行(以及培训期间的第102行)中得到了这个错误: AttributeError:'BiSeNet'对象没有属性'module' 我没有在这里粘贴所有代码,只是粘贴主要步骤 首先,他们建立了这样的模型: os.environ['CUDA_VISIBLE_DEVI

我是pytorch的新手,我正在尝试研究BiSeNet用于图像分割(代码取自github repo:)。在训练阶段,经过一些训练阶段后,如果val的结果比以前的好,网络将执行验证和tryes以保存模型的参数。 在最后一次操作中,我在第109行(以及培训期间的第102行)中得到了这个错误:

AttributeError:'BiSeNet'对象没有属性'module'

我没有在这里粘贴所有代码,只是粘贴主要步骤

首先,他们建立了这样的模型:

os.environ['CUDA_VISIBLE_DEVICES'] = args.cuda
model = BiSeNet(args.num_classes, args.context_path)
if torch.cuda.is_available() and args.use_gpu:
        model = model.cuda()
因此存在一个BiSeNet对象,它是通过一个名为“model”的导入模块创建的,其中有一个名为build_BiSeNet.py的文件;在这个脚本中定义了类BiSeNet,并且没有名为module的属性。 查看pytorch文档,似乎在Model类中有一个名为modules的属性,其中包含我要保存的模块。 在文档中,他们还建议执行
torch.save(model.state_dict(),…)
以保存模型,而无需调用模块属性(如第109行中所述)

最后,我的问题是:为了避免出现错误,我应该删除第109行中的.module(以及第102行中的.module)还是将此属性更改为.modules?

看看它们,它们正在定义模型:

model=BiSeNet(args.num\u类,args.context\u路径)
如果torch.cuda.U可用()和args.use\U gpu:
model=torch.nn.DataParallel(model.cuda)()
nn.DataParallel
包装
模型后,您会得到一个“额外的”
.module

保存的检查点没有此额外的
.module
,因此,加载保存的检查点时:

model.module.load\u state\u dict(torch.load(args.checkpoint\u path))

它不是直接加载到
模型
,而是加载到
模型。模块

我怀疑
。模块
是在原始代码中完成的并行GPU训练的“剩余”。如果您没有使用任何并行性,我认为从有问题的行中删除
.module
是安全的。