【发布时间】:2020-03-19 13:49:36
【问题描述】:
在构建使用 TensorFlow 2.0 Attention 的模型时,我遵循了 TF 文档中给出的示例。 https://www.tensorflow.org/api_docs/python/tf/keras/layers/Attention
示例中的最后一行是
input_layer = tf.keras.layers.Concatenate()(
[query_encoding, query_value_attention])
然后例子有注释
# Add DNN layers, and create Model.
# ...
所以这样做似乎合乎逻辑
model = tf.keras.Sequential()
model.add(input_layer)
这会产生错误
TypeError: The added layer must be an instance of class Layer.
Found: Tensor("concatenate/Identity:0", shape=(None, 200), dtype=float32)
更新(@thushv89 响应后)
我最终要做的是在以下模型中添加一个效果很好的注意力层(或将其转换为注意力模型)。
model = tf.keras.Sequential()
model.add(layers.Embedding(vocab_size, embedding_nodes, input_length=max_length))
model.add(layers.LSTM(20))
#add attention here?
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(loss='mean_squared_error', metrics=['accuracy'])
我的数据是这样的
4912,5059,5079,0
4663,5145,5146,0
4663,5145,5146,0
4840,5117,5040,0
前三列是输入,最后一列是二进制,目标是分类。数据的准备与此示例类似,目的相似,即二元分类。 https://machinelearningmastery.com/use-word-embedding-layers-deep-learning-keras/
【问题讨论】:
标签: python tensorflow keras deep-learning attention-model