Keras字嵌入四克模型

时间:2016-12-27 19:28:04

标签: python keras embedding n-gram

我正在关注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

任何提示都将非常感激。提前致谢

1 个答案:

答案 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来解决你的问题。