- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图了解 with
block 在上述情况下的行为方式。我假设总是只有一张图和一个 session 。我知道我有(至少?)2 种方法可以在 with
block 中使用 session :
示例 1: 使用 as_default()
创建一个上下文管理器:
Same documentation说:
Use with the
with
keyword to specify that calls totf.Operation.run
ortf.Tensor.eval
should be executed in this session.
# Create session
sess = tf.Session()
# Enter with block on a new context manager
with sess.as_default():
# Train: Following line should result calling tf.Operation.run
sess.run([optimizer, loss], feed_dict={x: x_train, y: y_train)
# Eval: Following line should result calling tf.Tensor.eval
sess.run([loss], feed_dict={x: x_eval, y: y_eval)
示例 2: 如 same documentation in a lower section 中所述在 session 中进行阻止:
Alternatively, you can use
with tf.Session():
to create a session that is automatically closed on exiting the context, including when an uncaught exception is raised.
# Enter with block on session instead of Context Manager
with tf.Session() as sess:
# Train: Following line seems calling tf.Operation.run as per my test
sess.run([optimizer, loss], feed_dict={x: x_train, y: y_train)
# Eval: Following is unclear
sess.run([loss], feed_dict={x: x_eval, y: y_eval)
我想了解什么是正确的用法,因为我看到了这两种情况的 GitHub 示例,但当然没有结果。在我的测试中,示例 1 和示例 2 都适用于训练。对于评估,似乎存在我无法理解的差异。浏览 Tensorflow 源代码超出了我的知识范围。有人可以解释一下吗?
最佳答案
它们做的事情略有不同,因此根据用法的不同,它们可能正确也可能不正确。 tf.Session.as_default()
只会确保 session 设置为默认 session ,因此调用 eval
和 run
将默认使用该 session :
import tensorflow as tf
sess = tf.Session()
with sess.as_default():
print(sess is tf.get_default_session()) # True
但是,如文档中所述,tf.Session.as_default()
不会在 with
block 之后自动关闭 session 。如果需要,您可以使用 session 本身作为上下文管理器:
import tensorflow as tf
with tf.Session() as sess:
# Do something with the session
sess.run([]) # RuntimeError: Attempted to use a closed Session.
然而,尽管(从我的角度来看)没有明确记录,使用 session 作为上下文管理器也使其成为默认 session 。
import tensorflow as tf
with tf.Session() as sess:
print(sess is tf.get_default_session()) # True
tf.Session.as_default()
有什么意义? , 然后?好吧,只是当你想暂时将一个 session 设置为默认 session 但之后又不想关闭它时(在这种情况下你应该稍后手动关闭它,或者将它用作外部上下文管理器)。当您有多个打开的 session 时,这可能是最相关的。考虑以下情况:
import tensorflow as tf
with tf.Session() as sess1, tf.Session() as sess2:
print(sess2 is tf.get_default_session()) # True
这里 sess2
是默认的,因为它的上下文是后来添加的(它可以被认为是 sess1
创建的上下文的“内部”)。但现在您可能想暂时将 sess1
设置为默认值。但是,您不能再次将 sess1
本身用作上下文管理器:
import tensorflow as tf
with tf.Session() as sess1, tf.Session() as sess2:
# Do something with sess2
with sess1:
# RuntimeError: Session context managers are not re-entrant.
# Use `Session.as_default()` if you want to enter
# a session multiple times.
因此您可以使用 tf.Session.as_default()
在一个和其他默认 session 之间切换:
import tensorflow as tf
with tf.Session() as sess1, tf.Session() as sess2:
with sess1.as_default():
# Do something with sess1
with sess2.as_default():
# Do something with sess2
# This is not really needed because sess2 was the default
# in the outer context but you can add it to be explicit
# Both sessions are closed at the end of the outer context
当然,如果你愿意,即使在一次 session 中你也可以更加明确:
import tensorflow as tf
with tf.Session() as sess, sess.as_default():
# ...
就我个人而言,我从未使用过tf.Session.as_default()
在我的实际代码中,但话又说回来,我很少需要使用多个 session ,我更喜欢使用 tf.Session.run()
而不是依赖默认 session ,但这主要是我想的个人品味问题。
关于python - Tensorflow 使用 Context Manager 与使用 Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52729117/
我正在尝试加载外部 SVG 并将其附加到 Electron 项目中的现有 SVG。 d3.xml 方法对我不起作用,所以我正在查看 d3.symbols ,希望如果我提供路径数据(来自 fs.read
我正在编写一个 Web 应用程序,使用 Go 作为后端。我正在使用这个 GraphQL 库 (link)和 Echo Web 框架 (link) .问题在于 graphql-go 库在 Go 中使用了
有没有办法改造 gin.Context至 context.Context在围棋?构建 Go 微服务应该使用什么? 最佳答案 标准库的 context.Context type 是一个接口(interf
如果我能够像这样注册一个接收器: LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new Inte
如果我有 appengine.Context 而不是 ,我不知道如何调用 cloud.WithContext 和 google.DefaultClient >上下文。上下文。 有(旧的)“appeng
有什么区别- AccountManager accountManager = (AccountManager) context.getSystemService(Context.ACCOUNT_SER
我刚读了这篇文章:Build You Own Web Framework In Go为了在处理程序之间共享值,我选择了 context.Context我通过以下方式使用它在处理程序和中间件之间共享值:
在 Visual Studio Code 中,我对 3 个“上下文”菜单项感到非常困惑:Run Tests in Context和 Debug Tests in Context和 Run .NET C
我正在使用带有 和 @Autowired 的 Spring 2.5.6 版本。 虽然我在调度程序上下文中使用 SimpleUrlHandlerMapping ,但一切正常 - Autowiring 工
我使用的是 Context.registerReceiver()、Context.sendBroadcast(Intent) 和 Context.unregisterReceiver() 但是当我看到
问题在于以下错误, [错误] 在 scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4580)[错误] 在 scal
最近我正在尝试使用 SoundPool 在我的应用程序中播放一些简单的音效 但不幸的是它在 AVD 中不起作用并且应用程序崩溃 “上下文”到底是什么意思? 完全不懂 提前致谢 最佳答案 任何上下文都允
我正在使用上下文建议器,我想知道我们是否可以设置用于建议的上下文范围,而不是使用所有上下文。 目前查询需要匹配所有上下文。我们能否在上下文中添加“或”运算和/或指定用于特定查询的上下文? 以here为
我被一个使用这种方法的函数卡住了。所以我知道如何使用 expressionValue(with:context:) 函数,但上下文如何参与对我来说仍然是不透明的。也许有人有简单的例子? try tra
我正在尝试在上下文管理器中更改我的 python 程序中的目录。使用 invoke.context.Context 似乎是正确的方法,从 Fabric 文档中获取并且使用常规 with os.chdi
我最近开始使用 Android Studio 处理我的 Android 项目。我注意到在 IDE 的右下角,有文本 Context: .好奇心打败了我,所以现在我正在网上搜索更多信息。我还没有找到任
假设我有这些功能: func A(ctx context.Context) { // A takes some time to process } func B(ctx context.Con
所以,我有一个 context.Context( https://golang.org/pkg/context/ ) 变量,有没有办法列出这个变量包含的所有键? 最佳答案 可以使用不安全反射列出 co
我正在尝试找出传播 context.Context 的正确方法用于在使用 Gin 时使用 OpenTelemetry 进行跟踪。 我目前有一个 gin调用函数并传递 *gin.Context 的处理程
我们可以使用 Remove["context`*"] 删除特定上下文中的所有符号。 .但是是否可以删除 "context`"自己从系统中删除,以便它不再在 Contexts[] 中列出? 最佳答案 据
我是一名优秀的程序员,十分优秀!