gpt4 book ai didi

python - 将输入与嵌入和密集层合并

转载 作者:行者123 更新时间:2023-11-28 16:23:29 26 4
gpt4 key购买 nike

我有两个输入,x_a 和 x_b,其中 x_a 是一个分类变量(因此是嵌入),x_b 是一个常用的特征矩阵。基本上我想将 x_b 乘以一个权重矩阵 W_b,它是一个 10x64 矩阵,这样我最终得到一个 64 维输出。

from keras.models import Sequential
from keras.layers import Dense, Activation, Embedding, Merge

encoder_cc = Sequential()

# Input layer for countries(x_a)
encoder_cc.add(Embedding(cc_idx.max(),64))
# Input layer for triggers(x_b)
encoder_trigger = Sequential()
# This should effectively be <W_b>
encoder_trigger.add(Dense(64, input_dim=10, init='uniform'))

model = Sequential()
model.add(Merge([encoder_cc, encoder_trigger], mode='concat'))

然后我想在我做通常的神经网络之前结合(合并)这两个。除了我收到错误:

Exception: "concat" mode can only merge layers with matching output shapes except for the concat axis. Layer shapes: [(None, 1, 64), (None, 64)]

关于如何解决这个问题有什么想法吗?

最佳答案

嵌入层用于序列,它输出一个 3D 形状的张量 (None, sequence_length, embedding_size) 在你的例子中是 (None, 1, 64) 因为您的输入长度为 1。

纠正此问题的方法是按照 Stephan 的建议向您的 encoder_cc 模型添加一个 Flatten() 层,或者在之后添加一个 Reshape((64,))嵌入层。这将强制输出形状为 (None, 64) 并匹配其他模型的形状。

希望对您有所帮助。

关于python - 将输入与嵌入和密集层合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38452646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com