Простой автоэнкодер, сохраняющий постоянный тензор, как предсказано в keras

#python #keras

#python #keras

Вопрос:

Я новичок в keras и области глубокого обучения. На самом деле, я хочу создать плотный вектор для каждого документа в моих данных, чтобы я создал простой автоэнкодер, используя библиотеку keras. Входные данные нормализуются с использованием Word2vec с размером вложения 200, а все функции находятся в диапазоне от -1 до 1. Я подготовил 3D-тензор, который содержит 137 выборок (количество документов) с 469 столбцами (максимальное количество слов), а третье измерение — это размер вложения.Я использовал функцию потерь mse и GRU в качестве рекуррентной нейронной сети. У меня тот же вектор для всех документов, что и результат прогнозирования автоэнкодера, в то время как потери начинаются с очень низкого значения и становятся постоянными через несколько эпох. Я пробовал разное количество эпох, но получил то же самое. Я также пытался изменить размер пакета, но без изменений. Может ли кто-нибудь помочь мне найти проблему, пожалуйста.

 
input = Input(shape=(469,200))

encoder = GRU(120,activation='sigmoid',dropout=0.2)(input)

neck = Dense(20)(encoder)

decoder1 = RepeatVector(469)(neck)

decoder1 = GRU(120,return_sequences=True,activation='sigmoid',dropout=0.2)(decoder1)

decoder1 = TimeDistributed(Dense(200,activation='tanh'))(decoder1)

model = Model(inputs=input, outputs=decoder1)

model.compile(optimizer='adam', loss='mse')

history = model.fit(x_train, x_train,validation_data=(x_test,x_test) ,epochs=10, batch_size=8)
  

это входные данные «x_train» :

это входные данные quot;x_trainquot; :

print(model.predict(x_train)) возвращает эти значения (те же векторы):

print(model.predict(x_train)) возвращает эти значения (те же векторы):

потеря

потеря 1
loss2
потеря

Почему «model.predict (x_train)» возвращает тот же вектор для 137 выборок?

Заранее благодарю вас.

Комментарии:

1. Не понимаю, что вы подразумеваете под одним и тем же вектором. Значения разные ..?!