在张量流中compute_gradients返回什么

2024-01-01

mean_sqr = tf.reduce_mean(tf.pow(y_ - y, 2))
optimizer = tf.train.AdamOptimizer(LEARNING_RATE)
gradients, variables = zip(*optimizer.compute_gradients(mean_sqr))
opt = optimizer.apply_gradients(list(zip(gradients, variables)))

init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)

for j in range(TRAINING_EPOCHS):
    sess.run(opt, feed_dict={x: batch_xs, y_: batch_xs})

我不太明白compute_gradients返回什么?它是否为batch_xs分配的给定x值返回sum(dy/dx),并更新apply_gradients函数中的梯度,例如:
theta

或者它是否已经返回给定批次中每个 x 值求和的梯度平均值,例如 sum(dy/dx)*1/m,m 定义为 batch_size?


compute_gradients(a,b) 返回 d[ sum a ]/db。因此,在您的情况下,这将返回 d Mean_sq / d theta,其中 theta 是所有变量的集合。这个方程中没有“dx”,你不是在计算梯度。输入。那么批次维度会发生什么情况呢?您可以在mean_sq的定义中自行删除它:

mean_sqr = tf.reduce_mean(tf.pow(y_ - y, 2))

因此(为了简单起见,我假设 y 是一维)

d[ mean_sqr ] / d theta = d[ 1/M SUM_i=1^M (pred(x_i), y_i)^2 ] / d theta
                        = 1/M SUM_i=1^M d[ (pred(x_i), y_i)^2 ] / d theta

所以你可以控制它是对批次求和、取平均值还是做不同的事情,如果你将mean_sqr定义为使用reduce_sum而不是reduce_mean,梯度将是批次的总和,依此类推。

另一方面,apply_gradients 只是“应用梯度”,应用的确切规则取决于优化器,对于 GradientDescentOptimizer 来说,它是

theta <- theta - learning_rate * gradients(theta)

对于 Adam 来说,你使用的方程当然更复杂。

Note然而,tf.gradients 在数学意义上更像是“反向传播”而不是真正的梯度 - 这意味着它取决于图依赖性并且不识别“相反”方向的依赖性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在张量流中compute_gradients返回什么 的相关文章

随机推荐

  • bootstrap-affix :affix 下面的 Div“跳”到顶部。如何让它平滑地向后滚动?

    已经使用 bootstrap 几天了 并对它提供的功能感到惊讶 一直在尝试拥有某种 标题 当用户向下滚动时将其固定在顶部 您可以在这里找到我当前的工作 http mp3dj free fr affix site http mp3dj fre
  • 比较 SynchronizationContext

    如何比较 SynchronizationContext 看来同一个Dispatcher在使用BeginInvoke时可以创建不同的SynchronizationContext 当我深入研究两个 不相等的 上下文时 我发现调度程序线程 ID
  • 在记事本++中创建新快捷方式

    我正在尝试在记事本 中添加快捷方式或按钮来调用我当前正在编辑的文件上的外部程序 例如 假设我有程序 analyzer jar 我想在记事本 中创建一个按钮 或快捷方式 来直接运行命令 cmd K java jar analyzer jar
  • 在 AWS EC2 上添加新的 Spark 工作线程 - 访问错误

    我有现有的正在运行的 Spark 集群 它是通过以下方式启动的spark ec2脚本 我正在尝试按照说明添加新的从站 停止集群 在 AWS 控制台上 在其中一个从属设备上 启动更多这样的操作 启动集群 尽管新实例已添加到同一安全组 并且我可
  • Y 轴中带有长标签的 Recharts 水平条形图的动态高度

    如果 YAxis 中的标签太长 如何动态更改 Recharts 中的 ResponsiveContainer 的高度 这是我的代码
  • 错误:打开模拟器时,在 Windows 8 上找不到抛出的模拟器图像 (avds)

    我正在 ionic 框架中制作一个 cordova 应用程序 我想在模拟器 somfired 命令中测试它ionic emulate android它引发了以下错误 运行命令 ionic emulate android 时 Git Bash
  • ControlSend 使用 SetKeyDelay, 0, 0 时随机发送错误字符(修改和未修改)

    我正在自我回答这个问题 因为我在互联网上看到过这个问题 但几乎没有有用的答案 而且在 Stack Overflow 上也绝对找不到我能找到的解决方案 示例代码 考虑一下这段代码 它只写了几行 shell 命令 0 SetKeyDelay 0
  • 允许多个不同形状的接口作为 TypeScript 返回类型

    我有一个函数 它接受一些参数并生成将传递到外部进程的对象 由于我无法控制最终需要创建的形状 因此我必须能够为我的函数采用一些不同的参数并将它们组装成适当的对象 这是一个非常基本的示例 展示了我遇到的问题 interface T1A type
  • BuildHTTPClient 无法获取构建定义步骤?

    我们使用 BuildHTTPClient 以编程方式创建构建定义的副本 更新内存中的变量 然后将更新的对象保存为新定义 我在用着Microsoft TeamFoundation Build2 WebApi BuildHTTPClient h
  • 在android中显示栏之间的空格

    如何在android中提及条形图的条形之间的空格 Thanks in advance 上面的图片会让你清楚我的疑问 即 蓝色条实际上不适合相应的 x 轴值 这里是 Ord 1 Ord 2 Ord 3 Ord 4 我需要显示这些带有 x 轴值
  • OpenCV 2.3 中的 VideoCapture 问题

    我使用时遇到问题视频截取用于打开 MPEG 视频文件的类 代码已正确编译 但是 在运行期间 它无法打开文件并给出以下警告消息 警告 打开文件时出错 modules highgui src cap ffmpeg impl hpp 477 仅当
  • 使用 JNI 从单独的线程调用静态 Java 方法

    我正在尝试在 android 中使用 JNI 来创建一个函数指针 我正在使用的本机库将其调用转发给 java When initializeStateController被调用 使用创建一个新线程pthread create每当状态控制器的
  • 使用 bash shell 脚本替换文件中的字符串

    我想在文件中找到一个字符串 进行一些操作并将该字符串放回文件中 下面给出的是我需要的示例 cat sample txt TimeStamp gt 123456 Name gt ABC Mail gt email protected cdn
  • 在makefile中写入依赖项,用makefile

    基于一些SO问题 以及发现的一些进一步的参考 我正在尝试构建一个能够 查找 给定目录 SRC the cpp待编译的文件 编译 cpp 生产 o物体 产生 so每个共享对象 o以前编译的 为了实现这一点 make 文件应该做的是 查找 给定
  • 解决方案。有代理时如何install_github

    当您尝试从 GitHub 存储库安装某些 R 包时 install github rWBclimate ropensci 如果您出现以下错误 Installing github repo s rWBclimate master from r
  • 从 mysql 网站检索时未选择数据库

    我有一个 mysql 数据库 我正在尝试从我们的网站主机 godaddy 检索该数据库 我遵循了一种似乎正确的格式 但它告诉我 java sql SQLException No database selected Code public s
  • 无缝循环音频 html5

    有人知道如何实现音频标签的无缝循环吗 我在想一些基于javascript的东西 我有一个循环 比如 1 小节 我希望它循环并保持节奏 所以我需要循环平滑 无间隙 当我简单地将 循环 设置为 true 时 它 会滞后并且不会保持节奏 虽然仍然
  • 在 JBoss Seam 上实现 SOAP Web 服务的最佳方法是什么?

    我需要在 Jboss Seam 2 1 0 上实现 SOAP Web 服务 这个想法是将无状态 bean 方法导出为 Web 服务 然而 我发现了两种方法 第一个是使用 Seam 自己的 Web 服务注释 这样做的问题是缺乏文档 第二个 是
  • C# ASP.NET MVC 控制器单元测试

    我对单元测试有点陌生 我想知道我这样做是否正确 Controller public ActionResult Index return View Message Index TestMethod public void MessageVie
  • 在张量流中compute_gradients返回什么

    mean sqr tf reduce mean tf pow y y 2 optimizer tf train AdamOptimizer LEARNING RATE gradients variables zip optimizer co