问题标签 [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.
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
?
这个问题可能看起来与此类似,但我正在寻找的答案并没有用清晰的图片来解决。
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 时,我得到:
似乎某些权重被复制(包括名称)在保存它们时出现上升错误。
...有人知道吗?
tensorflow - 有没有办法在不应用输入的情况下计算梯度?
我的问题与以下内容大致相同: 我可以在不应用输入的情况下获得张量相对于输入的梯度吗?
有没有办法获得梯度wrt。输入,然后插入新输入?可以让我们找到 phi_z(x,z,t)|z=a 的东西。
我已经尝试强制一个层等于 phi_z(x,z,t) 和评估 z。但这并没有产生很好的结果。
任何帮助,将不胜感激。谢谢。