我正在尝试在 theano/keras 中使用 LSTM 实现语言模型。我的网络运行良好,我也看到训练损失减少了,但测试准确率始终高于 99%,即使我没有长时间训练我的网络。我使用了 word2vec 向量并将权重嵌入到嵌入层中。我的网络看起来像:
model = Graph()
model.add_input(name='input', input_shape=(n_train,), dtype=int)
model.add_node(Embedding(output_dim=rnn_dim, input_dim=n_symbols, weights=[embedding_weights]),name = 'embedding',input='input')
model.add_node(LSTM(output_dim=dense_dim,input_dim=rnn_dim), name='forward', input='embedding')
model.add_node(Dropout(0.5), name='dropout', input='forward')
model.add_node(Dense(output_size, activation='softmax'), name='softmax', input='dropout')
model.add_output(name='output', input='softmax')
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.99, nesterov=True)
model.compile(sgd, loss={'output': 'categorical_crossentropy'})
print("Train...")
model.fit({'input': X_train,'output': y_train},
batch_size=128,
nb_epoch=1,verbose=1)
我的训练和测试数组形状是: X_train 形状:(100000, 18) X_test 形状:(10000, 18) y_train 形状:(100000, 998) y_test 形状:(10000, 998)
其中有 100000 个训练句子和 10000 个测试句子,每个句子包含 18 个单词。输出的类数为 998。
谁能建议为什么我可能没有得到真正的测试错误?