1
這是一個非常簡單的初學者Theano問題。Theano物流SGD,按維度學習率
我試圖修改隨Deep Learning Tutorials一起提供的Logistic SGD代碼,以從單一學習率切換到特定維度的學習率。例如,如果我有3個輸入維度,我想使用3個不同的學習率,每個維度一個。
原相關的代碼是:
learning_rate = 0.1
x = T.matrix('x')
y = T.ivector('y')
classifier = LogisticRegression(input=x, n_in=3, n_out=2)
cost = classifier.negative_log_likelihood(y)
g_W = T.grad(cost=cost, wrt=classifier.W)
g_b = T.grad(cost=cost, wrt=classifier.b)
updates = [(classifier.W, classifier.W - learning_rate * g_W),
(classifier.b, classifier.b - learning_rate * g_b)]
train_model = theano.function(inputs=[],
outputs=cost,
updates=updates,
givens={
x: minibatch_x,
y: minibatch_y})
在numpy的,這將是簡單地用學習速率的陣列替換標量學習率的問題,並且與所述梯度g_W和G_B執行逐元素乘法。在Theano這樣做會產生一個錯誤:
'Expected an array-like object, but found a Variable: maybe you are trying to call a function on a (possibly shared) variable instead of a numeric array?'
顯然有一些關於Theano,我失蹤了。任何人都可以啓發我嗎?