相关疑难解决方法(0)

如何在TensorFlow变量中获得损失的梯度?

我所追求的功能是能够在给定一些数据的情况下告诉给定变量的梯度与我的误差函数有关.

实现这一目标的一种方法是查看变量在调用训练后变化了多少,但显然可以根据学习算法大量变化(例如,几乎不可能用RProp这样的东西来判断)并且只是不是很干净.

提前致谢.

tensorflow

39
推荐指数
2
解决办法
4万
查看次数

在具有急切执行的 TensorFlow 2.0 中,如何计算特定层的网络输出的梯度?

我有一个用 InceptionNet 制作的网络,对于输入样本bx,我想计算隐藏层的模型输出的梯度。我有以下代码:

bx = tf.reshape(x_batch[0, :, :, :], (1, 299, 299, 3))


with tf.GradientTape() as gtape:
    #gtape.watch(x)
    preds = model(bx)
    print(preds.shape, end='  ')

    class_idx = np.argmax(preds[0])
    print(class_idx, end='   ')

    class_output = model.output[:, class_idx]
    print(class_output, end='   ')

    last_conv_layer = model.get_layer('inception_v3').get_layer('mixed10')
    #gtape.watch(last_conv_layer)
    print(last_conv_layer)


grads = gtape.gradient(class_output, last_conv_layer.output)#[0]
print(grads)

Run Code Online (Sandbox Code Playgroud)

但是,这会给None. 我也试过gtape.watch(bx)了,但它仍然给出None.

在尝试 GradientTape 之前,我尝试使用tf.keras.backend.gradient但出现如下错误:

RuntimeError: tf.gradients is not supported when eager execution is enabled. Use tf.GradientTape instead.
Run Code Online (Sandbox Code Playgroud)

我的模型如下:

model.summary()

Model: "sequential_4"
_________________________________________________________________ …
Run Code Online (Sandbox Code Playgroud)

python gradient tensorflow tf.keras tensorflow2.0

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

tensorflow ×2

gradient ×1

python ×1

tensorflow2.0 ×1

tf.keras ×1