【发布时间】:2020-01-22 19:10:03
【问题描述】:
我正在从某个函数创建的配置字典中加载 keras 中的模型。我已经用许多其他模型尝试过这个方案而没有问题,但这是我使用tensorflow.keras.layers.Attention 的第一个方案,并且在从配置中读取时出现未知层异常。
我知道有一个 API 可以使用 JSON/YAML 序列化和加载自定义层,但这是一个 keras 层,我做错了吗?
顺便说一下,这是使用 Tensorflow 1.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'
)
【问题讨论】:
-
我无法复制您的问题。代码不会按原样运行 - 我从
in对象收到语法错误(in是保留关键字),并且在对my_model的调用中有一个错字/额外参数。当我更正这些代码时,代码运行时没有任何 ValueError -
@BrendanA。我编辑了代码 sn-p 并确保运行它时出错
-
我意识到我之前测试时运行的是 1.15。刚刚确认 1.14 对我来说失败了,但 1.15 没有给出错误。
-
确实 1.14 失败了,您能否发表评论作为答案以将其标记为已解决?
-
刚刚发布。当然,这并不能真正解释您为什么会遇到问题 -
tf.keras.layers.Attention的文档适用于 1.14,其中包含与您的非常相似的示例。
标签: python tensorflow keras