api 自定义梯度训练网络
Created by: shiningboy123
对 由forward得到的输出 设置自己的梯度setSlotGrad(),然后再调用backward(),这样网络参数会根据自己设置的梯度发生变化吗,还是说网络参数保持不变?样例代码如下,其中 my_callback对参数不做修改。
my_network.forward(batch_inputs, network_outputs, api.PASS_TRAIN)
network_outputs.setSlotGrad(0, api.Matrix.createDenseFromNumpy(my_gradient))
my_network.backward(my_callback)
for each_param in my_network.getParameters():
updater.update(each_param)
updater.finishBatch(0.)
updater.apply()
updater.restore()
updater.catchUpWith()