machine-learning - 使用 _max_pool_gradient 的 Tensorflow 反池化操作

标签 machine-learning neural-network tensorflow conv-neural-network

解池操作如所描述的,例如在 Zeiler 2014:https://arxiv.org/abs/1311.2901 ,相当于最大池化操作的梯度。

在 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()函数计算最大池操作的梯度,但是这些需要一个变量列表,您可以根据该变量列表获取梯度,但在最大池操作的情况下,您需要获取相对于池化层输入的梯度,因此如果compute_gradients()的varlist参数是一个张量,它将不起作用。

有人可以告诉我如何获取 max_pool 操作的梯度,以便我可以使 _max_pool_gradient 工作吗?

最佳答案

TensorFlow 支持这种类型的操作,但它们的级别要低一些。特别是有tf.gradients(...)这使您可以计算偏导数。您所要做的就是指定应该微分的张量以及应该用于微分的张量,因此它可以有效地生成 d ys / d xs 。此外,您还提供grad_ys这是它们将被“附加”的地方(因为最初它被设计为使用链规则生成渐变,而 TF 是仅附加的,因此您以后无法连接渐变)。

关于machine-learning - 使用 _max_pool_gradient 的 Tensorflow 反池化操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38159352/

相关文章:

python - 如何获取tensorflow张量大小(以字节为单位)?

image-processing - 使用 SciKit-Image 和 SciKit-Learn 进行图像预处理和聚类 - 需要一些建议

python - ML 预测算法遇到问题

machine-learning - 机器学习中如何处理超过二维的输入数据

Python tensorflow : cast placeholder to string

python - Tensorflow Estimator API 在评估模式下保存图像摘要

Python NEAT 在某一点之后不再进一步学习

machine-learning - 先验分布在分类中重要吗?

neural-network - 神经网络无法预测高值。

artificial-intelligence - 权重初始化