Tensorflow中Max Pool向后发生了什么?

时间:2016-07-25 19:43:11

标签: tensorflow

我对这里的最大池后向实现有点困惑:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/maxpooling_op_gpu.cu.cc#L192

任何人都可以在这里解释如何计算渐变。就像max pool的局部渐变是0和1,所以他们只是复制来自grad_in的值?虽然有关于参数top_diff,top_offset,bottom_offset的评论;谁能解释那些是什么(我是初学者)?

1 个答案:

答案 0 :(得分:3)

你认为最大池的本地渐变是01' s。但是,如果从两个相邻的补丁传播相同的最大值,则必须将相应的梯度值相加并反向追溯到该最大值的位置。例如,考虑一维向量:

[x0 x1 x2]

假设您正在使用补丁大小为MaxPool且步幅为2的{​​{1}},并假设1max(x0, x1) = x1。那么输出就是

max(x1, x2) = x1

让我们说进入的渐变是[x1 x1] ,那么必须回溯的渐变是

[g1 g2]

您在所指出的代码中看到[0 g1+g2 0] 函数调用的内容。