首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tf.GradientTape不能在外面看“with”块

tf.GradientTape不能在外面看“with”块
EN

Stack Overflow用户
提问于 2019-09-26 06:11:29
回答 1查看 985关注 0票数 1

关于TensorFlow的tensorflow.org教程展示了使用tf.GradientTape的方法:

代码语言:javascript
复制
x = tf.convert_to_tensor([1,2,3]);
with tf.GradientTape() as t:
  t.watch(x); 

我想知道为什么我不能像这样将t.watch(x)移动到with块之外:

代码语言:javascript
复制
x = tf.convert_to_tensor([1,2,3]);
t = tf.GradientTape();
t.watch(x); #ERROR

错误是:

代码语言:javascript
复制
tape.py (59):
pywrap_tensorflow.TFE_Py_TapeWatch(tape._tape, tensor)

AttributeError: 'NoneType' object has no attribute '_tape'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-26 06:25:01

我知道怎么做了。tf.GradientTape类设计为在with块内工作,即。它有enterexit方法。

因此,为了让它在“with”块之外工作,必须显式地调用方法__enter__,但是,必须避免直接调用__enter__

代码语言:javascript
复制
x = tf.convert_to_tensor([1,2,3]);
t = tf.GradientTape();
t.__enter__();
t.watch(x); 

参考资料:Explaining Python's '__enter__' and '__exit__'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58110537

复制
相关文章

相似问题

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