#python #tensorflow #keras #autoencoder
Вопрос:
У меня есть сложенный автоэнкодер, который имеет такую структуру 500-250-100-50-100-250-500
. Теперь я хочу удалить 50-мерный скрытый слой и использовать его для классификации моих входных данных в 2 класса с использованием слоя softmax.
Это означает, что мне нужен мой автоэнкодер, чтобы сжать мои 500-мерные входные векторы из моего обучающего набора данных в 50-мерные векторы и использовать их для обучения слоя softmax. В дополнение к этому мне также нужен 50-мерный скрытый слой.
Как бы я получил скрытый слой: autoencoder.layers[3]
Но как мне получить сжатые 50-мерные векторы из 500-мерных входных векторов? Мне нужно было бы получить вывод этого скрытого слоя при использовании autoencoder.predict(x_train)
.
Ответ №1:
Если вы хотите получить другой вывод из скрытого слоя, вы можете получить вывод и добавить его в новую модель, как это:
new_model = tf.keras.Model(inputs=autoencoder.input, outputs=[autoencoder.layers[3].output, autoencoder.output])
Тогда вы можете получить такие прогнозы:
hidden_layer_pred, last_layer_pred = new_model.predict(x_train)
Комментарии:
1. Зачем мне это нужно
autoencoder.output
tf.keras.Model
? Этогоautoencoder.layers[3].output
будет недостаточно?2. Если вы хотите, чтобы они оба были в одной модели, вы можете сделать вот так. Но если вам достаточно просто скрытого слоя, то да, вы можете.