Kerasでモデルを構築する時、モデルのオブジェクトやレイヤーにname引数で名前をつけないと、
区別できるように自動的に識別子(名前)をつけてくれています。
適当な例ですが、summary()で表示すると確認できる、
次のコードのsequential_13/lstm_12/dense_14 のようなやつです。
print(model.summary())
"""
Model: "sequential_13"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_12 (LSTM) (None, 10) 640
_________________________________________________________________
dense_14 (Dense) (None, 3) 33
=================================================================
Total params: 673
Trainable params: 673
Non-trainable params: 0
_________________________________________________________________
None
"""
jupyter notebookなどで試行錯誤しているとどんどん数字が大きくなっていくのですが、
ちょっと見た目が良く無いので、数値をリセットしたくなることがあります。
(そもそもnameで名前つけてあげればいいのですが。)
そのような場合、 バックエンド関数である、 clear_session() をつかうと、識別子をリセットできます。
ドキュメント: バックエンド
由来をよく知らないのですが、 backend は K という別名でインポートする慣習があるようです。
from tensorflow.keras import backend as K
K.clear_session()
# もう一度モデル構築
model = Sequential()
model.add(LSTM(10, input_shape=(40,5), activation="tanh"))
model.add(Dense(3, activation="softmax"))
print(model.summary())
"""
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm (LSTM) (None, 10) 640
_________________________________________________________________
dense (Dense) (None, 3) 33
=================================================================
Total params: 673
Trainable params: 673
Non-trainable params: 0
_________________________________________________________________
None
"""
助かりました~~~
コメントありがとうございます。
お役に立ったのであれば、記事にしたかいがありました。
こんなの気にして調べてるの自分だけかと思っていましたので。