Якобиан дешифратора в VAE - PullRequest
0 голосов
/ 04 марта 2019

Я новичок в ML и на этом форуме, поэтому, пожалуйста, будьте добры.

То, что я хотел бы вычислить, - это якобиан части декодера VAE с латентными векторами.Я нашел функцию jacobian_batch в tenorflow.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)

работает (возвращает матрицу 3x3 (# входных и выходных dim =3) с толковыми номерами).Я попытался:

f_of_xin = tf.sin(tf.sin(tf.constant(tf.Session().run(xin))))

, в этом случае функция jacobian_batch больше не работает (что означает, что она возвращает форму None).Я предполагаю, что это связано с преобразованием данных, но я не знаю, как передать структуру tf в функцию model.predict.Кстати, моя модель здесь (декодер) - просто простая нейронная сеть с 1 скрытым слоем.Не могли бы вы помочь мне?

С уважением,

Мелисса

...