Keras:无输入的自定义图层

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中没有输入的情况下,有没有构建自定义层的解决方法?

thu*_*v89 4

您可以执行以下操作,

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)