问题标签 [tensorflow-gradient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
197 浏览

tensorflow - 矩阵wrt矩阵的TensorFlow梯度没有意义

假设我有两个矩阵 tf_t(形状:5x3)和 tf_b(形状:3x3)。y_tf = tf.matmul(tf_t, tf_b) 然后我使用 tf.gradient api 计算了 dy/dt

我得到以下矩阵作为 dy/dx

上面的矩阵看起来不正确。因为对于元素 y_tf[0,0]

注意:y_tf[0,0] = tf_t[0,0]*tf_b[0,0] + tf_t[0,1]*tf_b[1,0] + tf_t[0,2]*tf_b[2,0]

如果我表演

我得到这样的矩阵

上面的第一行是矩阵的第一列,tf_b考虑到矩阵乘法的工作原理,如果我是,总而言之,这些数字将是3.424693但是,我得到的结果是dy_dx它的第一个元素dy_dx[0,0]-0.17307831它是总和第一排tf_b ( sum(tf_b[0,:])!!

那么任何人都可以解释如何将梯度tf_y[0,0] wrt tf_x减少到-0.17307831 而不是3.424693

这个问题可能看起来与类似,但我正在寻找的答案并没有用清晰的图片来解决。

0 投票
0 回答
47 浏览

tensorflow - tf.GradientTape() 中的 MULTIPLE FORWARD PASS 似乎重复了权重

我根据这篇论文编写了一个自定义模型,用于 TF2.0 中的样式转换。简而言之,所提出算法的损失函数需要评估 3 个损失分量。该模型接受 2 个输入图像,比如 Ic、Is(c 代表内容,s 代表风格),然后弹出一个拼贴图像 O。

在单个训练步骤中,网络接收以下一对作为输入并弹出相应的图像:

  • Ic,是 -> O(需要)
  • Ic, Ic -> O 身份损失1
  • 是,是 -> O 身份损失2

然后一个特征网络评估不同的损失分量(因为主网络需要 3 次前向传递,但不是可训练网络的一部分,因此它具有不可训练的权重)

代码如下所示:

我可以很容易地训练模型,但是当我尝试 save_weights 时,我得到:

似乎某些权重被复制(包括名称)在保存它们时出现上升错误。

...有人知道吗?

0 投票
0 回答
22 浏览

tensorflow - 有没有办法在不应用输入的情况下计算梯度?

我的问题与以下内容大致相同: 我可以在不应用输入的情况下获得张量相对于输入的梯度吗?

有没有办法获得梯度wrt。输入,然后插入新输入?可以让我们找到 phi_z(x,z,t)|z=a 的东西。

我已经尝试强制一个层等于 phi_z(x,z,t) 和评估 z。但这并没有产生很好的结果。

任何帮助,将不胜感激。谢谢。