Субмодель Keras должна быть построена - PullRequest
1 голос
/ 26 июня 2019

Я создаю класс Python, который наследуется от модели keras.

class MyModel(tf.keras.models.Model):

    def __init__(self, size, input_shape):
        super(MyModel, self).__init__()
        self.layer = tf.keras.layers.Dense(size, input_shape=(input_shape,))

    def call(self, inputs):
        return self.layer(inputs)

model = MyModel(5, 30)
model.summary()

Это дает мне такую ​​ошибку:

ValueError: This model has not yet been built. Build the model first by calling `build()` or calling `fit()` with some data, or specify an `input_shape` argument in the first layer(s) for automatic build.

Исправлено, если я добавляю одну строку после созданиямодель:

model = MyModel(5, 30)
model(tf.keras.layers.Input((30,)))
model.summary()

Но это выглядит не лучшим образом.Как я могу это исправить?

1 Ответ

1 голос
/ 26 июня 2019

Вы можете вызвать self.build() в конструкторе.

Примерно так:

class MyModel(tf.keras.models.Model):

    def __init__(self, size, input_shape):
        super(MyModel, self).__init__()
        self.layer = tf.keras.layers.Dense(size, input_shape=(input_shape,))
        self.build(input_shape)

    def call(self, inputs):
        return self.layer(inputs)

model = MyModel(2, (5, 30))
model.summary()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...