我正在使用深度学习的theano教程,我怀疑 theano功能的更新是如何工作的。无论定义更新的参数是什么,如果任何参数发生变化,它将采用新值吗?
theano.function( [i],
cost,
updates = updates,
givens = { self.x: trainX[i*self.mbSize: (i+1)*self.mbSize],
self.y: trainY[i*self.mbSize: (i+1)*self.mbSize]
}
)
更新定义为
updates = [ (param, param-learnRate*grad)
for param, grad in zip(self.params, gradients) ]
这里的learnRate不是theano变量。我的问题是,如果我在某个时间点更改了learnRate,那么theano函数是否会更改learnRate的值,还是会继续使用旧值?
LearnRate已更改为
LearnRate = LearnRate/10
最初,LearnRate为0.05
答案 0 :(得分:2)
它将继续使用旧值。
数字在python中是不可变的,因此更改LearnRate
的值不会影响updates
列表中使用的值,我想一旦使用提供的{编译了theano函数{1}}除非您使用新值再次编译它,否则无法更改。
正如您可能已经知道的那样,您可以将学习率变为theano变量,然后在需要时更改其值。
这是另一个可能有用的问题,Is there a way to change a function's update list without re-compiling it in Theano?