我想要计算梯度值(每个示例或小批量),并将权重直接修改为任何值(因此我可以使用任何方法控制梯度下降,而不仅仅是提供的sgd /学习率时间表)。我使用的是python接口。
发布于 2017-01-24 20:21:24
要获得渐变,请参阅grad
方法in the docs。要现在更新权重,可以使用.value
属性:
>>> w = C.Parameter((2,3), init=C.glorot_uniform())
>>> w.value
array([[-0.80213612, -0.7965923 , -0.10688281],
[-1.0493834 , -0.32666588, 0.90124035]], dtype=float32)
>>> w.value = w.value + 1
>>> w.value
array([[ 0.19786388, 0.2034077 , 0.89311719],
[-0.0493834 , 0.67333412, 1.90124035]], dtype=float32)
CNTK在其路线图上支持轻松规范用户定义的学习者,这将减少您必须编写的样板代码的数量。预计在2017年3月左右可用。
发布于 2017-01-23 21:36:55
下面是执行这些操作的tutorial:
如果更新% BATCH_SIZE_BASELINE == 0: episode_number = {W1: gradBuffer‘w1’..astype(np.float32),W2: gradBuffer‘w2’..astype(np.float32)}episode_number= sgd.update( grads,BATCH_SIZE_BASELINE) #为loss.parameters中的变量重置gradBuffer gradBuffer= dict(( var.name,np.zeros(shape=var.shape)) if var.name in 'W1','W2','b1','b2')
https://stackoverflow.com/questions/41814858
复制