我想在Conv2D图层的权重上添加一个名为foo
的变量,以跟踪某些簿记。
这是我的尝试:
kernels = model.get_layer(name='conv2d_1').get_weights()
kernels.foobar = 4
请注意,kernels
的类型为list
。
但是,先前的代码会产生以下错误:
AttributeError: 'list' object has no attribute 'foobar'
有什么主意吗?
答案 0 :(得分:0)
您无法按自己的方式使用kernels.__setattr__('foobar', 4)
/ setattr(kernels, 'foobar', 4)
,因此无法像使用自定义类那样设置任意属性。
也许在这种情况下,您在list
上做了一个非常基本的子类:
class Kernels(list):
def __setattr__(self, attr, x):
# Make sure you aren't overriding some method of lists,
# such as `.append()`
if attr in self.__dir__():
raise ValueError('%s is already a method.')
super().__setattr__(attr, x)
>>> k = Kernels([1, 2, 3])
>>> k.foobar = 4
>>> k
[1, 2, 3]
>>> k.foobar
4