为什么在chainer中定义自定义函数后向函数必须返回与输入相同的渐变形状?

时间:2017-08-23 06:37:12

标签: chainer

两个问题:

  1. https://docs.chainer.org/en/stable/tutorial/function.html写道:向后函数必须返回与forward方法的参数相同的形状?因为在某些情况下,输入数据和参数不需要是相同的形状或长度,如Convolutional2D,如何处理输入数据和参数有不同的形状。

  2. 因为在某些情况下,例如maxpooling,这里没有渐变。如何定义这样的chainer函数?

1 个答案:

答案 0 :(得分:0)

  1. backward方法应该返回一个数组元组,元组的第i个数组应该与forward方法的第i个参数具有相同的形状。当然,forward的不同参数(以及backward的不同返回值)可以有不同的形状。

  2. 当函数没有渐变w.r.t.一些输入(即,渐变始终为零),您可以返回None作为元组的相应元素而不是零填充数组。顺便说一下,max pooling确实有渐变。