nai*_*bah 5 python keras tensorflow
我想在没有任何输入的情况下实现Keras自定义层,只是可训练的权重。
这是到目前为止的代码:
class Simple(Layer):
def __init__(self, output_dim, **kwargs):
self.output_dim = output_dim
super(Simple, self).__init__(**kwargs)
def build(self):
self.kernel = self.add_weight(name='kernel', shape=self.output_dim, initializer='uniform', trainable=True)
super(Simple, self).build()
def call(self):
return self.kernel
def compute_output_shape(self):
return self.output_dim
X = Simple((1, 784))()
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
__call__() missing 1 required positional argument: 'inputs'
在Keras中没有输入的情况下,有没有构建自定义层的解决方法?
您可以执行以下操作,
from tensorflow.keras.layers import Layer
class Simple(Layer):
def __init__(self, output_dim, **kwargs):
self.output_dim = output_dim
super(Simple, self).__init__(**kwargs)
def build(self, input_shapes):
self.kernel = self.add_weight(name='kernel', shape=self.output_dim, initializer='uniform', trainable=True)
super(Simple, self).build(input_shapes)
def call(self, inputs):
return self.kernel
def compute_output_shape(self):
return self.output_dim
X = Simple((1, 784))([])
print(X.shape)
Run Code Online (Sandbox Code Playgroud)
哪个产生
>>> (1, 784)
Run Code Online (Sandbox Code Playgroud)