作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
上下文管理器可以将两个相关的操作变成一个。例如:
with open('some_file', 'w') as opened_file:
opened_file.write('Hola!')
上面的代码相当于:
file = open('some_file', 'w')
try:
file.write('Hola!')
finally:
file.close()
def grad(model, inputs, targets):
with tf.GradientTape() as tape:
loss_value = loss(model, inputs, targets)
return loss_value, tape.gradient(loss_value, model.trainable_variables)
它相当于什么?
最佳答案
我不是Python专家,但我认为with是由__enter__
方法和__exit__
方法定义的( https://book.pythontips.com/en/latest/context_managers.html )。对于 tf.GradientTape 方法 __enter__
是:
def __enter__(self):
"""Enters a context inside which operations are recorded on this tape."""
self._push_tape()
return self
https://github.com/tensorflow/tensorflow/blob/r2.0/tensorflow/python/eager/backprop.py#L801-L804
以及 __exit__
方法
def __exit__(self, typ, value, traceback):
"""Exits the recording context, no further operations are traced."""
if self._recording:
self._pop_tape()
https://github.com/tensorflow/tensorflow/blob/r2.0/tensorflow/python/eager/backprop.py#L806-L809
然后
with tf.GradientTape() as tape:
loss_value = loss(model, inputs, targets)
是
tape = tf.GradientTape()
tape.push_tape()
loss_value = loss(model, inputs, targets)
self._pop_tape()
关于python - 为什么自动微分和梯度带需要使用上下文管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55310671/
我正在为仪表板创建径向仪表。以下代码是我的工作。我需要知道如何使起始 Angular 为 15 度以及如何使结束 Angular 为 165 度。请帮助我。我需要实现这个系统,所以期待完成这项工作。我
我是一名优秀的程序员,十分优秀!