为什么张量流会改变形状变形()打破坡度的流动?

2024-04-26 00:19:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个tf.变量(),然后使用该变量创建一个简单函数,然后使用变形()然后我把tf.梯度()在函数和展平变量之间。[为什么没有返回]。

var = tf.Variable(np.ones((5,5)), dtype = tf.float32)
f = tf.reduce_sum(tf.reduce_sum(tf.square(var)))
var_f = tf.reshape(var, [-1])
print tf.gradients(f,var_f)

上面的代码块在执行时返回[None]。这是虫子吗?请帮忙!


Tags: 函数reducevartfnponesvariable梯度
1条回答
网友
1楼 · 发布于 2024-04-26 00:19:55

您正在找到f相对于var_f的导数,但是f不是{}的函数,而是var的函数。这就是为什么你得不到[没有]。现在,如果您将代码更改为:

 var = tf.Variable(np.ones((5,5)), dtype = tf.float32)
 var_f = tf.reshape(var, [-1])
 f = tf.reduce_sum(tf.reduce_sum(tf.square(var_f)))
 grad = tf.gradients(f,var_f)
 print(grad)

将定义坡度:

tf.Tensor 'gradients_28/Square_32_grad/mul_1:0' shape=(25,) dtype=float32>

以下代码的图形可视化如下:

^{pr2}$

enter image description here

未定义grad_1的导数,而对于'grad\u2',则定义了它。给出了两种梯度的反向传播图(梯度图)。在

相关问题 更多 >