Градиент тензорного потока и оценка гессиана

Я нахожу проблему в оценке градиента тензорного потока r1.2 и функции Гессиана. В частности, я считаю само собой разумеющимся, что оценка градиента проводится численно в точке значений определенных переменных, исследуя реакцию функции-заполнителя.

Однако сейчас я пытаюсь оценить функцию гессиана (то есть градиенты) до и после обучения модели, и я всегда получаю одинаковые результаты (вероятно, в соответствии с заполнителями-заполнителями).

Я использую следующую функцию,

def eval_Consts(sess):
  a_v_fin, a_s_fin, a_C_fin, a_a_fin, a_p_fin, loss_fin = sess.run([a_v, a_s, a_C, a_a, a_p, loss],                                                             {A:A_train, Z:Z_train, y:BE_train}) #assignes values to parking variables
  print a_v_fin, loss_fin

  hess = tf.hessians( loss ,  [a_v, a_s, a_C, a_a, a_p] )

  grad = tf.gradients(loss, a_v)
  dGra0= tf.gradients(grad[0], a_v)

  print '\n', sess.run(a_v, feed_dict={A:A_train, Z:Z_train,
   y:BE_train })

  print '\n', sess.run(hess, feed_dict={A:A_train, Z:Z_train,
        y:BE_train })
  print '\n', sess.run(dGra0, feed_dict={A:A_train, Z:Z_train,
        y:BE_train })

оценить результаты и рассчитать градиенты один раз до и один раз после тренировки. Обратите внимание, что вычисление и печать a_v и потерь выполняется внутри функции.

На выходе a_v = 20.20000076 и функция потерь, потеря = 1.92866e+09 до тренировки. А после тренировки a_v = 16,8217 и проигрыш = 148206,0.

Однако вторая производная по отношению к a_v, оцененная, как указано выше, дает в обоих случаях одно и то же: 1.52536784e+08.

Более того, результат печати гессиана следующий:

[array([[  1.52536784e+08]], dtype=float32), array([[ 4804347.]], dtype=float32), array([[  4.80967168e+09]], dtype=float32), array([[ 226923.421875]], dtype=float32), array([[ 41.58702087]], dtype=float32)]

Другими словами, вовсе не гессиан (который является матрицей всех возможных вторых производных, включая перекрестные производные), а только диагональная часть гессианской матрицы.

Это почему?

0 ответов

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