教程:theano.grad()函数不计算渐变

时间:2016-01-04 22:21:47

标签: python machine-learning theano

使用Theano grad()函数运行简单的线性回归时遇到问题。这是一个基于以下教程的简单示例:

https://github.com/Newmu/Theano-Tutorials/blob/master/1_linear_regression.py

我发现有点太容易了,并且想要添加额外的输入变量(因此使权重成为2个变量的数组)。但是,我不能使grad()工作,因为它没有收敛,W1共享变量(权重矩阵)和成本函数都保持不变。

基本上,该示例应采用输入矩阵5,2(5个样本,每个样本具有2个特征),并在给定输出向量(5个样本)的情况下创建权重矩阵(1,2)。

编辑:(我忘了在grad()中添加更新=更新)

以下是代码:

import numpy
import theano
import theano.tensor as T

input_data = numpy.matrix([[28, 1], [35, 2], [18, 1], [56, 2], [80, 3]])
output_data = numpy.matrix([1600, 2100, 1400, 2500, 3200])

TS = T.matrix("training-set")
E = T.matrix("expected")
W1 = theano.shared(numpy.asarray([0.,0.]))

O = T.dot(TS, W1.T)
cost = T.mean(T.sqr(E - O.T))
gradient = T.grad(cost=cost, wrt=W1)
update = [[W1, W1 - gradient * 0.05]]
train = theano.function([TS,E], cost, updates=update)

for i in range(100):
    print train(input_data, output_data)

1 个答案:

答案 0 :(得分:0)

好的,愚蠢的错误:我忘了在grad()调用中设置updates = update。