У меня есть функция потерь, которая использует вывод модели Keras, а также производительность в игре во время тренировочного эпизода.Я хочу вызвать tf.gradients для функции потерь, чтобы получить потери относительно весов моей нейронной сети.У меня есть пара вещей, которые я не понимаю, как это сделать.
1: Когда я вызываю model.predict (), он возвращает массив значений (вероятности совершения действий).Если бы у меня были веса сети в правильном формате и они назывались tf.gradients (action, weights), вернул бы ли я ожидаемые градиенты или просто вернул бы 0, потому что это число, которое я извлек из массива с нулевым значением после вызова предиката ()?Я не могу просто попробовать и посмотреть, потому что мне еще не удалось успешно вызвать градиенты.
2: Давайте предположим, что у меня есть хорошо сделанная функция потерь, которая равна 1 числу, которое является суммойвыходы модели керас на разных этапах тренировочного эпизода (взвешенные по производительности в игре).Как мне использовать tf.gradients, чтобы получить градиент моей функции потерь, а затем сделать шаг?Кажется, я должен использовать model.trainable_weights и вызывать tf.gradients (потеря, вес), но это просто возвращает вектор Nones.Я должен сгладить веса или что-то?Должен ли я получить их откуда-то еще?
3: Как только у меня будет список градиентов, я хочу сделать один шаг градиента.Правильна ли эта строка кода?
self.AdamOpt.apply_gradients(tf.gradients(L,weights))
где
self.AdamOpt = tf.train.AdamOptimizer()