【发布时间】:2020-02-03 16:05:10
【问题描述】:
在 pytorch 中,创建层可以是半自动化的,这就是使用 for 循环的原因。
其中一个主要问题是这些层不能存储在列表或字典中,否则反向传播将不起作用。
这就是解决问题的原因。
在对象内,分配新的self属性
如何替换这个
self.res1 = 1
self.res2 = 2
self.res3 = 3
有了这个
for i in range(2):
res_name = 'res'+str(i+1)
self.res_name = i
既然我已经以这种方式创建了对象,我该如何以同样的方式访问它们。例如,如果我们假设 self.res_name 现在是一个对象?
for i in range(2):
res_name = 'res'+str(i+1)
out = self.res_name(out)
【问题讨论】:
-
这不是真正可维护的。也许你需要一个dictionary。
-
也许您可以覆盖
__getattr__&__setattr__以获得相同的效果,而无需进入动态属性。 -
使用 dict() ...
-
可能
self.res想成为一个列表 -
字典不能在pytorch中使用,因为它返回一个空的参数列表