kerasのmodel.summaryでThis model has not yet been builtと怒られる

 

 

 

 

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 input_shape or batch_input_shape in the first layer for automatic build.

「まだモデルが出来てないよ」と怒られる。

モデルを作るためにmodel.compile(…)を先に行う必要がある。

例えば

# NG
model = Sequential()
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))

model.summary()

model.compile(...)
# OK
model = Sequential()
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))

model.compile(...)

model.summary()
オリジナルのKerasレイヤーを作成する - Keras Documentation

自作レイヤーの作り方を解説しているページがある。

ここを見ると

def build(self, input_shape): 
  # Create a trainable weight variable for this layer. 
  self.kernel = self.add_weight(name='kernel', shape=(input_shape[1], self.output_dim), 
                    initializer='uniform', trainable=True) 
  super(MyLayer, self).build(input_shape) # Be sure to call this somewhere!

build()はLayerの重みの初期化をしていると思われる。

ということは、他のレイヤーもbuild()で重みの初期化をしているのかも?

コメント

タイトルとURLをコピーしました