Bio*_*roo 1 python with-statement pytorch
我试图with
在执行代码块之前使用,但前提是满足条件,但(至少常见)的用法with
似乎不支持这一点,除非我复制该代码块。
更具体地说,我知道我可以执行以下操作:
if condition:
with blah_blah():
my_code_block
else:
my_code_block
Run Code Online (Sandbox Code Playgroud)
但这在开发过程中并不令人满意,因为我所做的任何更改都my_code_block
必须进行两次。我想做的(概念上)是:
if condition:
with blah_blah():
else:
my_code_block
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。有办法完成我想做的事情吗?
对于任何对我的特定用途感兴趣的人,我正在尝试编写在 pytorch 中运行一批示例的代码,如果我处于评估模式,则使用 torch.no_grad() ;如果我处于训练模式,则不使用 torch.no_grad() 。所以我想做的就变成了
if mode == 'eval':
with torch.no_grad():
else:
run_batch(features, labels)
Run Code Online (Sandbox Code Playgroud)
che*_*ner 10
使用该with
语句,但nullcontext
必要时使用上下文管理器。
from contextlib import nullcontext
with blah_blah() if condition else nullcontext():
my_code_block
Run Code Online (Sandbox Code Playgroud)
nullcontext
with
接受一个可选参数,如果您的语句期望与 绑定某些内容,它将返回该参数as
。例如,
with nullcontext("hello") as f:
print(f) # outputs "hello"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
203 次 |
最近记录: |