首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Keras中嵌入层和LSTM的三维阵列作为输入

在Keras中嵌入层和LSTM的三维阵列作为输入
EN

Stack Overflow用户
提问于 2019-03-04 03:51:49
回答 1查看 2.6K关注 0票数 0

嘿,伙计们,我已经建立了一个LSTM模型,可以工作,现在我尝试(不成功)添加一个嵌入层作为第一层。

这个解决方案不适合我。在提问之前,我还阅读了以下问题:尺寸、昏暗等.理解Keras LSTM煤角样例

我的输入是一种由27个字母组成的语言字符的一次热编码(1和0)。我选择将每个单词表示为10个字符的序列。每个单词的输入大小是(10,27),我有465个单词,所以它是X_train.shape (465,10,27),我还有一个大小为y_train.shape (465,1)的标签。我的目标是训练一个模型,同时构建一个字符嵌入。

现在,这就是编译和匹配的模型。

代码语言:javascript
复制
main_input = Input(shape=(10, 27))
rnn = Bidirectional(LSTM(5))
x = rnn(main_input)
de = Dense(1, activation='sigmoid')(x)
model = Model(inputs = main_input, outputs = de)
model.compile(loss='binary_crossentropy',optimizer='adam')
model.fit(X_train, y_train, epochs=10, batch_size=1, verbose=1)

添加嵌入层后:

代码语言:javascript
复制
main_input = Input(shape=(10, 27))
emb = Embedding(input_dim=2, output_dim = 10)(main_input)
rnn = Bidirectional(LSTM(5))
x = rnn(emb)
de = Dense(1, activation='sigmoid')(x)
model = Model(inputs = main_input, outputs = de)
model.compile(loss='binary_crossentropy',optimizer='adam')
model.fit(X_train, y_train, epochs=10, batch_size=1, verbose=1)

输出: ValueError:输入0与bidirectional_31层不兼容:预期的ndim=3,found ndim=4

如何修复输出形状?你的想法将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2019-03-04 04:43:17

我的输入是一种由27个字母组成的语言字符的一次热编码(1和0)。

您不应该将一次热编码传递给EmbeddingEmbedding层将整数索引映射到n维向量.因此,您应该直接传递前一个热门索引。

也就是说,在您有一个像[[0, 1, 0], [1, 0, 0], [0, 0, 1]]这样的单热点输入之前,它是由一组整数(如[1, 0, 2] )创建的。而不是传递(10, 27),一个热向量传递在(10,)的原始向量中。

代码语言:javascript
复制
main_input = Input(shape=(10,)) # only pass in the indexes
emb = Embedding(input_dim=27, output_dim = 10)(main_input) # vocab size is 27
rnn = Bidirectional(LSTM(5))
x = rnn(emb)
de = Dense(1, activation='sigmoid')(x)
model = Model(inputs = main_input, outputs = de)
model.compile(loss='binary_crossentropy',optimizer='adam')
model.fit(X_train, y_train, epochs=10, batch_size=1, verbose=1)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54976385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档