日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【theano-windows】学习笔记十七——梯度中的consider_constant

發布時間:2023/12/13 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【theano-windows】学习笔记十七——梯度中的consider_constant 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

主要是在寫玻爾茲曼機相關的theano時, 在計算梯度grad的時候發現一個參數名字叫做consider_constant,來看看這個到底做了什么事情

參考博客:

using consider_constant selectively

【theano-windows】學習筆記三——theano中的導數

理論

其實就是數學中求導中用到的將某個與變量相關的項固定, 求解其它項關于變量的梯度. 我記得有個梯度下降法叫做固定坐標梯度下降, 就是先固定x利用y優化函數, 然后固定y優化x之類的, 后續我去看看, 感覺如果它用theano實現的話可能會用到這個參數

用數學的方法表示就是, 如果有如下的操作

x=w2,y=w3,z=x+y
如果我們不使用 consider_constant, 那么對 w求導的結果是
?z?w=2w+3w2
但是如果設置 consider_constant=[x],那么求導結果就是
?z?w=3w2
其實看看我前面用 theano實現RBM的 博客中容易發現使用 consider_constant=[吉布斯采樣k次的visible層輸出]的原因在于這個 visible的值計算是與模型參數有關的, 如果不設置它為常量, 最終的導數不止是計算能量函數的導數了, 還會額外計算這個 visible對模型參數的導數, 這并不是RBM的正常梯度更新方法所需要的, 詳細可看博客RBM的利用自由能量函數更新梯度的數學表達式

驗證

先引入相關包

import theano import theano.tensor as T

定義標量操作

w=T.dscalar('w') x=w**2 y=w**3 z=x+y

不設置常量參數的情況下計算導數

gz=T.grad(z,w) fn=theano.function([w],gz) theano.pp(fn.maker.fgraph.outputs[0])

結果

Elemwise{Composite{((i0 * i1) + (i2 * sqr(i1)))}}(TensorConstant{2.0}, w, TensorConstant{3.0})

翻譯過來就是(2?w)+(3?w2)

設置x為常量參數的情況下

gz=T.grad(z,w,consider_constant=[x]) fn=theano.function([w],gz) theano.pp(fn.maker.fgraph.outputs[0])

結果

Elemwise{Composite{(i0 * sqr(i1))}}(TensorConstant{3.0}, w)

翻譯過來就是3?w2

后記

根據我們的cost中關于梯度計算的理論, 來合理設置是否需要固定某項來更新梯度.

總結

以上是生活随笔為你收集整理的【theano-windows】学习笔记十七——梯度中的consider_constant的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。