我正在尝试获取图层的权重。当使用 keras 层并且输入连接到它时,它似乎可以正常工作。但是,在将其包装到我的自定义层中时,它不再起作用了。这是一个错误还是我错过了什么?
编辑:注意事项:
我读到可以在自定义层的 build() 中定义可训练变量。但是,由于自定义层由 keras 层 Dense (以及以后可能更多的 keras 层)组成,那些应该已经定义了可训练变量和权重/偏差初始化器。(我看不到在 TestLayer 的init () 中使用将在 TestLayer 的 build() 中定义的变量来覆盖它们的方法。
class TestLayer(layers.Layer):
def __init__(self):
super(TestLayer, self).__init__()
self.test_nn = layers.Dense(3)
def build(self, input_shape):
super(TestLayer, self).build(input_shape)
def call(self, inputs, **kwargs):
test_out = test_nn(inputs) # which is test_in
return test_out
test_in = layers.Input((2,))
test_nn = layers.Dense(3)
print(test_nn.get_weights()) # empty, since no connection to the layer
test_out = test_nn(test_in)
print(test_nn.get_weights()) # layer returns weights+biases
testLayer = TestLayer()
features = testLayer(test_in)
print(testLayer.get_weights()) # Problem: still empty, even though connected to input.