符号变量
x = T.dmatrix('x')
y = T.dmatrix('y')
这些是神经网络的权重
W1_vals = np.asarray(rng.randn(input, hidden), dtype=theano.config.floatX)
W1 = shared(value=W1_vals, name='W1')
W2_vals = np.asarray(rng.randn(hidden, output), dtype=theano.config.floatX)
W2 = shared(value=W2_vals, name='W2')
cost = T.mean(T.nnet.categorical_crossentropy(prob_y_given_x, y))
params = [W1, W2]
grads = T.grad(cost, params)
更新规则是:
lr = 0.01
updates = [(param, param-lr*grad) for param, grad in zip(params, grads)]
训练模型的功能
train = function(inputs=[x, y], outputs=cost, updates=updates)
在我调用列车函数的每次迭代后,使用W1
和W2
打印W1.get_value()
和W2.get_value()
的值时,我发现只有W2
值正在变化,而W1
值在整个过程中是相同的,并且没有变化。
我的代码中缺少什么?