torch使用DataParallel并行时,模型使用Forward函数注册属性变量丢失的问题(表现为局部变量而不是类属性)
如标题表达,关注’m’属性和’y’属性的变化。
注意到通过调用并行模型的forward函数注册self.m变量并没有成功成为类的属性变量。
但是通过自己实现的test函数注册的self.y变量成功成为了类属性变量。
原理未知,望大佬赐教
xxx.py文件内容
测试结果
遗留问题:
- 使用forward调用自建函数注册变量?能否正常注册变量?
也不行,用forward函数调用其他函数修改self.m变量,主模型内还是不存在m变量。 - 如果不使用nn.DataParallel包装模型,是否能使得foward函数成功注册变量?
不包装DataParallel时,forward函数能够成功注册变量。