我有一个使用固定权重矩阵的自定义keras图层。我想知道如何使用带有tensorflow的keras API处理这个固定权重矩阵。特别是当K.constant
提供更大的灵活性时(例如,我可以将self.add_weights(trainable=False)
与后者一起使用),为什么还要使用Layer.set_weights
。
具体来说,在构建方法中,我可以执行以下操作:
class CustomLayer(Layer):
...
def build(self,input_shape):
self.fixed_tensor = K.constant(self.my_fixed_tensor)
self.built = True
或
class CustomLayer(Layer):
...
def build(self,input_shape):
self.fixed_tensor = self.add_weight(
shape=self.my_fixed_tensor.shape,initializer=lambda shape,dtype: self.my_fixed_tensor,trainable=False
)
self.built = True
这两种解决方案都有效,我想知道它们在后端的处理方式是否不同。