我正在尝试构建一个以句子为输入的模型,接受每个单词并尝试预测下一个单词。我的输入和输出都是一个3D矩阵(句子数,每个句子的单词数,单词嵌入的维度)。输入是e。 G。 “我喜欢青苹果”,而输出“像青苹果_”,每个单词都嵌入了300维矢量,使用的是预先训练好的GoogleWord2Vec。我只使用输入层,LSTM层和TimeDistributed输出层。
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input (InputLayer) (None, 15, 300) 0
_________________________________________________________________
rnn (LSTM) (None, 15, 300) 721200
_________________________________________________________________
tanh (TimeDistributed) (None, 15, 300) 90300
=================================================================
#building the model
words = keras.layers.Input(batch_shape=(None, maxSeqLength, numDimensions), name = "input") #inputs
hiddenStates = keras.layers.LSTM(300, input_shape=(batch_size, maxSeqLength, numDimensions), return_sequences = True, name = "rnn")(words)
timeOutput = TimeDistributed(keras.layers.Dense(numDimensions, activation='relu'), name = "tanh")(hiddenStates)
model = keras.models.Model(input = words, output = timeOutput)
model.compile(loss='mse', optimizer = keras.optimizers.RMSprop(lr = 0.0001), metrics=['accuracy'])
print(model.summary())
#training the model
model.fit(input, output, batch_size=batch_size, epochs = 100, verbose=1)
我的问题是,当我运行模型时,我的准确度就像0,05。尝试不同的学习率或输入并不会改善它。有人能告诉我为什么我的模型会失败吗?该模型的目标是我想使用最后一个隐藏状态作为表示输入句子的向量。