我正在关注coursera神经网络课程,我正在尝试使用python + keras而不是octave传递作业。
我想预测前三个单词的第四个单词。我的输入文档共有250个独特的单词。
模型应该有一个嵌入层,将每个单词映射到50维向量空间,隐藏层有200个神经元,具有S形激活函数,输出层为250个单位,对第四个单词的概率等于通过softmax激活我的词汇中的那些。
我遇到尺寸问题。这是我的代码:
from keras.models import Sequential
from keras.layers import Dense, Activation, Embedding
model = Sequential([Embedding(250,50),
Dense(200, activation='sigmoid'),
Dense(250, activation='softmax')
])
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
然而,由于遇到以下错误,我从未编译模型:
Exception: Input 0 is incompatible with layer dense_1: expected ndim=2, found ndim=3
任何提示都将非常感激。提前致谢
答案 0 :(得分:0)
来自https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html
“嵌入层所做的就是将整数输入映射到嵌入矩阵中相应索引处的矢量,即序列[1,2]将转换为[embeddings [1],embeddings [2] ]]。这意味着嵌入层的输出将是3D张量的形状(samples,sequence_length,embedding_dim)。“
您的嵌入层输出3个维度向量,而密集层则需要2个暗淡的向量。
你可以按照链接教程和一些mod来解决你的问题。