LookupError:没有为操作类型定义渐变:ResizeNearestNeighborGrad

问题描述 投票:0回答:1

我正在尝试将 Wasserstein 梯度惩罚 添加到判别器的损失计算中。如果不添加这个惩罚,一切都会正常。但是当添加这部分时,它会给出类似这样的错误:

      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gradients_impl.py", line 737, in _GradientsHelper
        (op.name, op.type))
      LookupError: No gradient defined for operation 'gradients/discriminator/decoder/ResizeNearestNeighbor_grad/ResizeNearestNeighborGrad' (op type: ResizeNearestNeighborGrad)

以下是用于计算 Wasserstein 梯度惩罚的源代码部分:

    differences = tf.subtract(images_fake, images_real)
    alpha_shape = [params.batch_size] + [1] * (differences.shape.ndims - 1)
    alpha = tf.random_uniform(shape=alpha_shape, minval=0., maxval=1.)
    interpolates = images_real + (alpha * differences)
    d_model = Model(params, args.mode, interpolates, reuse_variables, images_fake, 1)
    gradients = tf.gradients(d_model.logistic_linear, [interpolates])[0]
    slopes = tf.sqrt(tf.reduce_sum(tf.square(gradients), reduction_indices=[1]))
    gradient_penalty = tf.reduce_mean((slopes - 1.) ** 2)
    _gradient_penalty = 10 * gradient_penalty

但是当下面的行正在执行时它会抛出上述错误。

   d_optim = opt_discriminator_step.minimize(total_loss_discriminator, var_list=d_vars)

尽管如此,我还是不知道如何解决这个问题。欢迎任何意见或答案。

python tensorflow deep-learning generative-adversarial-network
1个回答
0
投票

尝试使用 tf.keras.layers.AveragePooling2D 。它可以执行相同的操作,只需确保正确设置参数

© www.soinside.com 2019 - 2024. All rights reserved.