我想知道是否有人可以帮助我理解我的维度不匹配。我正在训练一个 NER 模型,其中输入是句子,填充到 50 个单词长度,其中每个单词都有 GloVe 200 表示。目标是 7 类的单热编码。
X_train 形状为 (9358, 50, 200) y_train 的形状是 (9358, 50, 7)
在切换到词嵌入之前,我的输入只是来自词汇表的 word2idx 表示,因此 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 的维度