Python 四元模型中的Keras词嵌入
我正在学习coursera神经网络课程,我正在尝试使用python+keras而不是octave通过作业 我想预测前面三个单词中的第四个单词。我的输入文档共有250个独特的单词 该模型应该有一个嵌入层,将每个单词映射到一个50维的向量空间,一个隐藏层,有200个带S形激活函数的神经元,一个250个单元的输出层,通过softmax激活,对第四个单词与我的词汇表中的单词相等的概率进行评分 我在尺寸方面有问题。这是我的密码:Python 四元模型中的Keras词嵌入,python,keras,embedding,n-gram,Python,Keras,Embedding,N Gram,我正在学习coursera神经网络课程,我正在尝试使用python+keras而不是octave通过作业 我想预测前面三个单词中的第四个单词。我的输入文档共有250个独特的单词 该模型应该有一个嵌入层,将每个单词映射到一个50维的向量空间,一个隐藏层,有200个带S形激活函数的神经元,一个250个单元的输出层,通过softmax激活,对第四个单词与我的词汇表中的单词相等的概率进行评分 我在尺寸方面有问题。这是我的密码: from keras.models import Sequentia
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,2]将转换为[embeddings[1],embeddings[2]。这意味着嵌入层的输出将是形状的三维张量(样本、序列长度、嵌入维数)
嵌入层输出3维向量,而密集层需要2维向量
你可以按照链接教程和一些mods,它将适合你的问题