Machine learning 使用_max_pool_梯度的Tensorflow解冷操作

Machine learning 使用_max_pool_梯度的Tensorflow解冷操作,machine-learning,neural-network,tensorflow,conv-neural-network,Machine Learning,Neural Network,Tensorflow,Conv Neural Network,如Zeiler 2014中所述,解冷操作相当于最大池操作的梯度 在tensorflow中,您可以使用gen_nn_ops._max_pool_gradient来实现这一点,函数将参数grad作为输入,在文档中显示: grad: A `Tensor`. Must have the same type as `orig_input`. 4-D. Gradients w.r.t. the output of `max_pool` 我尝试使用优化器的compute_gradients

如Zeiler 2014中所述,解冷操作相当于最大池操作的梯度

在tensorflow中,您可以使用gen_nn_ops._max_pool_gradient来实现这一点,函数将参数grad作为输入,在文档中显示:

grad: A `Tensor`. Must have the same type as `orig_input`.
        4-D.  Gradients w.r.t. the output of `max_pool`
我尝试使用优化器的compute_gradients()函数计算最大池操作的梯度,但是这些需要一个变量列表,您可以根据该列表计算梯度,但是在最大池操作的情况下,您可以根据池层的输入计算梯度,因此,如果用于计算_gradients()的varlist参数是张量,那么它将不起作用


有谁能告诉我如何获得最大池操作的梯度,这样我就可以使“最大池”梯度工作?

TensorFlow支持这种操作,但它们的级别较低。特别是有一个函数可以让你计算偏导数。你所要做的就是指定应该微分的张量,以及应该用于微分的张量,这样它就可以有效地生成
dys/dxs
。此外,您还提供了
grad_ys
,这是它们将被“附加”的地方(最初它被设计为使用链式规则生成渐变,而TF只是附加,因此您以后无法连接渐变)。

这里的参数grad应该只是转置池的输入。如果将该操作用作转置池,则不存在gradient@OlivierMoindrot谢谢你的评论。你说的转置池到底是什么意思?我在这里读到:,这个解冷是由最大池操作的梯度给出的。所以我想我的问题是如何让max_pool_gradient操作起作用。我到底需要为辩论毕业生提供什么?