#python #tensorflow #neural-network #gradient #keras-layer
#python #тензорный поток #нейронная сеть #градиент #keras-слой
Вопрос:
Я новичок как в ML, так и в этом форуме, поэтому, пожалуйста, будьте добры.
То, что я хотел бы вычислить, — это якобиан части декодера VAE с латентными векторами.r.t. Я нашел функцию jacobian_batch в tensorflow.python.ops.parallel_for.gradients, которая в принципе могла бы выполнить эту работу за меня. Однако я не смог заставить эту функцию работать. Более конкретно, я пытался:
xin = tf.constant(np.array(latent_vector[2]),dtype=tf.float32)
f_of_xin = tf.constant(decoder.predict(tf.Session().run(xin), batch_size = 1000000, verbose=1),dtype=tf.float32)
jac = batch_jacobian(f_of_xin,xin)
Который не работает (возвращает None shape), в то время как:
f_of_xin = tf.sin(tf.sin(xin))
jac = batch_jacobian(f_of_xin,xin)
работает (возвращает матрицу 3×3 (количество входных и выходных данных dim = 3) с разумными числами).
Я пытался:
f_of_xin = tf.sin(tf.sin(tf.constant(tf.Session().run(xin))))
кроме того, в этом случае функция jacobian_batch больше не работает (что означает, что она возвращает форму None). Я предполагаю, что это связано с преобразованием данных, но я не знаю, как передать структуру tf в функцию model.predict. Кстати, моя модель здесь (декодер) — это всего лишь простая нейронная сеть с 1 скрытым слоем. Не могли бы вы мне помочь?
С уважением,
Мелисса