Включите прямой проход, а затем функцию потерь для пакета обучающих данных вместо отдельных данных

Я написал модель нейронной сети с ответом на вопрос, используя Keras с TensorFlow. Ниже приводится краткое описание входов, выходов и функции потерь моей модели:

  • Два входа в мою модель, Контекст и Запрос, имеют формы (number_of_samples, number_context_words, 200_features) и (number_of_samples, number_query_words, 200_features).

  • Результатом моей модели является стек из двух векторов одинакового размера p1 и p2 (softmaxed). После построения и компиляции модели я вызываю model.fit([Context, Query], y_train), где y_train также является стеком из двух массивов NumPy одинаковых форм с p1 и p2.

  • Функция потерь реализует журнал на p1, p2 и y_train.

Но когда я запускаю модель, всегда возвращаются бесконечные убытки. В функции потерь я печатаю переданный стек y_train и выходные данные модели (p1, p2) с помощью tf.Print. Есть только ненулевые, положительные (p1, p2) для первых обучающих данных, тогда как (p1, p2) для остальных в обучающих данных все нули, что теперь объясняет, почему моя функция потерь всегда возвращает бесконечность.

Я думаю, проблема здесь в том, что прямой проход выполняется только для отдельных обучающих данных, затем функция потерь вычисляет потери на всех выходных данных модели сразу после этого, в то время как другие обучающие данные еще не были получены при прямом проходе.

Итак, как выполнить прямую передачу пакета примеров, а затем загрузить этот пакет в функцию потерь, и последующие автоматические обновления могут быть выполнены?

0 ответов

Другие вопросы по тегам