Я собираюсь сделать классификацию текста, используя keras в python, на множестве положительных и отрицательных комментариев о некоторых фильмах.Я выполнил процесс word2vec для каждого комментария, используя Googlenews word2vec, и теперь у меня есть несколько векторов со значениями от -1 до 1. Мне нужно передать эти векторы в сеть, в которой в качестве первого слоя используется слой внедрения.Я понял, что слой внедрения не может обрабатывать векторы, так как он дает определенный вывод в model.predict для каждого входного вектора, что означает, что он не был обучен вообще, поскольку не имеет значения, что мы имеем на входе.
Поскольку я был полностью запутан с результатами, я сделал несколько случайных входных векторов размером 300 (тот же самый размер векторов googlenews), и построил простую сеть, включающую слой внедрения, плоский слой и плотный слойпроверить вывод сети после прогнозирования.Я понял, что если я изменю область входных векторов, например, на 0 - 2, слой внедрения будет хорошо проработан, а выходные данные model.predict будут достаточно точными.Вот часть кода (p1 - число векторов, а p2 = 300):
model = Sequential()
embedding_layer = Embedding(input_dim=p1*p2, output_dim=5, input_length=p2, trainable=False, batch_input_shape=(None, p2))
model.add(embedding_layer)
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['acc'])
history = model.fit(x_train, y_train, epochs=100 , validation_data=(x_test,y_test), validation_split=0.3)
testing = model.predict(x_test)
Я ожидаю, что выходные данные будут иметь как минимум разные значения, в то время как я получаю одинаковые выходные данные для всех входных данных.векторы со значениями от 0 до 1 (что является результатом word2vec). Кто-нибудь имеет представление о том, что происходит в слое встраивания?