Я хочу сравнить два LSTM, один обученный на данных Википедии и один самостоятельно. У меня проблема при проектировании первой модели. Я определил два словаря для встраивания слов, один из которых основан только на данных Википедии, а другой - на моем корпусе. Я хотел бы определить первый LSTM, который имеет слой внедрения (который загружает предварительно обученные веса из Википедии), но вывод должен отличаться от его размера словаря (10000), фактически я хотел бы вывести столько классов, сколько те, которые содержатся в другом словаре (50000). Вот что у меня сейчас:
model = Sequential()
model.add(Embedding(vocab_size_wikipedia, embedding_size, input_length=55, weights=[pretrained_weights_wikipedia]))
model.add(Bidirectional(LSTM(units=embedding_size)))
model.add(Dense(vocab_size, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer = RMSprop(lr=0.0005),
metrics=['accuracy'])
model.fit(np.array(X_train), np.array(y_train), epochs=10, validation_data=(np.array(X_val), np.array(y_val)))
Вот мои переменные и формы:
shape of pretrained_weights_wikipedia = (10000, 100)
vocab_size = 50000
embedding_size = 100
vocab_size_wikipedia = 10000
X_train.shape() = (1600,55)
y_train.shape() = (1600,50000)
X_train.shape() = (400,55)
X_train.shape() = (400,50000)
X_train.shape() = (200,55)
X_train.shape() = (200,50000) #the labels are padded
Спасибо за помощь!