作者xxkevin (x_x)
看板DataScience
標題[問題] tensorflow gradients 對多維output
時間Tue Jul 16 13:20:16 2019
作業系統:win10
使用工具:tensorflow
問題內容:
一個input為 M 維, output為 N 維的DNN model
希望得到個別維度對input的梯度
也就是 δn1/δm1 , δn1/δm2 , ... ,δn2/δm1, δn2/δm2 , ...
所以我就用tf.gradients(output,input) 試圖要得到上面的東西
預期要得到一個 M*N 維的矩陣
結果他回傳是一個 M*1 維的矩陣
檢查了一下發現他"似乎"是回傳
[δsum(output)/δm1 , δsum(output)/δm2, ...] 這樣的一個向量給我
我也不是很確定他回傳的到底是甚麼
我google了一下發現也有類似的問題
但沒有解答
https://stackoverflow.com/questions/50454095/tf-gradients-dimensions-of-output
希望版上高手能給予解答
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.64.55.167 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1563254421.A.E11.html
推 yoyololicon: 你想拿jacobian matrix是ㄇ 07/16 22:29
→ yoyololicon: from tensorflow.python.ops.parallel_for.gradients 07/16 22:36
→ yoyololicon: import jacobian 07/16 22:36
推 sxy67230: 用GradientTape,1.14後很好用的,tape.gradient就是取 07/17 00:00
→ sxy67230: 得微分變量,tape.jacobian就是取得各自的微分,即jacob 07/17 00:00
→ sxy67230: ian。 07/17 00:00
推 sxy67230: 尤其是以後tf 2.0,官方guideline 推薦指定用gradientTa 07/17 00:02
→ sxy67230: pe 07/17 00:02
→ xxkevin: 感謝兩位的解答,問題解決了 07/18 10:26