我想知道是否有人可以帮助我理解我的维度不匹配。我正在训练NER模型,其中输入是句子,填充到50个单词长度,其中每个单词都是GloVe 200表示。目标是7个类的one-hot编码。
X_train形状为(9358,50,200)y_train形状为(9358,50,7)
在切换到词嵌入之前,我的输入只是来自vocab的word 2 idx表示,因此X的维度只有(9358,50),我的模型工作得很好。
def fit(x_train, y_train, num_words, tags, embeddings_matrix):
max_length = 50
embedding_dim = 200
model = Sequential()
model.add(Embedding(input_dim=num_words, output_dim=200,
input_length=max_length, weights=[embeddings_matrix], mask_zero=True))
model.add(Bidirectional(LSTM(units=embedding_dim, return_sequences=True,
recurrent_dropout=0.01)))
model.add(TimeDistributed(Dense(len(tags))))
model.compile(optimizer='adam')
model.summary()
print(x_train.shape)
print(y_train.shape)
history = model.fit(
x_train,
y_train,
validation_split = 0.2,
batch_size = 64,
epochs = 20,
verbose = 1
)
return model
我已经尝试了一些不同的构造,比如设置Input(shape=(50,200,)),我传入put,但是没有任何成功。我只是很困惑为什么要通过嵌入层添加另一个长度为200的维度,这导致了所有的问题
1条答案
按热度按时间7rtdyuoh1#
既然你已经将输入编码到GloVe 200,那么为什么你需要
Embedding
层?我相信这就是增加额外维度的原因,这导致了错误。