首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有时我看到Tensorflow session.run只获取优化器,有时它同时获取优化器和成本。有什么关系呢?

有时我看到Tensorflow session.run只获取优化器,有时它同时获取优化器和成本。有什么关系呢?
EN

Stack Overflow用户
提问于 2018-05-13 18:26:13
回答 2查看 714关注 0票数 1

有时我看到

代码语言:javascript
复制
sess.run(optimizer, feed_dict=feed)

其他时间

代码语言:javascript
复制
sess.run([cost, optimizer], feed_dict=feed)

据我所知,session.run将计算获取的项,还将计算所有依赖于所获取的项的内容。由于优化器依赖于“成本”,所以在后一个示例中调用成本和优化器不是多余的吗?

通常,优化器的定义如下

代码语言:javascript
复制
optimizer = tf.train.AdagradOptimizer(1.0).minimize(cost)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-13 19:13:00

由于优化器依赖于“成本”,所以在后一个示例中调用成本和优化器不是多余的吗?

有一件事你错了:优化器不一定依赖于‘成本’。因此,在获取列表中添加成本并不是多余的。这两个调用不执行相同的图。另一个答案也是错误的。

一个简单的例子:假设您的cost = tf.square(W)。梯度w.r.tW只是2 * W,它不依赖于成本。因此,图中的optimizer.minize(cost)操作(用梯度更新W )不依赖于成本。考虑到您确实需要向优化器提供成本张量,这可能看起来很奇怪--但是不一定要对张量进行评估。

至于人们为什么要使用sess.run([cost, opt])而不是sess.run(opt)的实际原因,它可能只是用于日志记录(打印成本值)。

票数 2
EN

Stack Overflow用户

发布于 2020-02-25 07:23:49

optimizer放入sess.run()允许您更新参数。从文档中,AdamOptimizer().minimize(cost)返回

更新var_list中变量的操作

因此:

  • sess.run(optimizer, feed_dict=feed)-只更新权重˜
  • sess.run([cost, optimizer], feed_dict=feed) -更新权重并返回成本。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50319296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档