いくつかの関数によって作成されたconfigdictからkerasにモデルをロードしています。私は他の多くのモデルでこのスキームを問題なく試しましたが、これは私が使用した最初のスキームでtensorflow.keras.layers.Attention
あり、構成から読み取るときに不明なレイヤーの例外が発生します。
JSON / YAMLを使用してカスタムレイヤーをシリアル化してロードするAPIがあることは知っていますが、これはkerasレイヤーです。何か問題がありますか?
ちなみにこれはTensorflow1.14.0を使用しています
from tensorflow.keras import layers, models, utils
def my_model(max_len, vocab_size, embedding_dims):
sequence = layers.Input(shape=(max_len,), name='sequence')
feature = layers.Input(shape=(1,), name='another_feature')
x = layers.Embedding(input_dim=vocab_size,
output_dim=embedding_dims,
input_length=max_len)(sequence)
out, sh, sc = layers.LSTM(64, return_state=True)(x)
att = layers.Attention()([out, sh])
x = layers.concatenate([att, feature])
model = models.Model(inputs=[sequence, feature], outputs=[x])
model.summary()
return model.get_config()
title_max_len = 50
vocab_size = 35000
embedding_dims = 30
config = my_model(
title_max_len,
vocab_size,
embedding_dims
)
model = models.Model.from_config(config) # Unknown layer: Attention
utils.plot_model(
model,
show_shapes=True,
show_layer_names=True,
to_file='model.png'
)
Tensorflow 1.14には問題があるようですが、1.15では問題なく動作します。アップグレードできる場合は、それが最も簡単な解決策かもしれません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加