文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
8.6 覆盖数据流图修饰器
当在如Jupyter Notebook这样的交互环境中使用TensorFlow时,函数修饰器是非常有用的。通常,在未明确指定使用其他数据流图时,TensorFlow会使用默认的数据流图。然而,在Jupyter Notebook中,解释器的状态会在不同单元(cell)执行期间保持。因此,初始的默认数据流图是始终存在的。
执行再次定义了数据流图运算的某个单元会试图将这些运算添加到它们已经存在的数据流图中。但是,在这种情况下TensorFlow会抛出一个错误。规避该错误的一个简单方法是根据菜单中的选项重新启动kernel并再次运行所有的单元。
然而,还有另外一种更好的方式。你只需创建一个定制的数据流图,并将其设置为默认的。所有的运算都将添加到该数据流图中,而且如果再次运行该单元,将会创建一个新的数据流图。旧的数据流图将被自动清理,因为已经不存在任何指向它的引用。
此外,还有一种更方便的做法——将数据流图的创建放在一个修饰器中,并用它修饰主函数。这个主函数应该定义完整的数据流图,例如定义占位符,并调用其他函数来创建模型。
这样会使上面的例子显得更容易:
以上便是本章的全部内容。接下来的最后一章将对全书进行总结。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论