tf.Session() 是否应该在 tf.Graph() 的上下文中?

我在Tensorflow代码中经常看到以下模式,但通常忽略这些模式后性能会更好。

with tf.Graph().as_default():    # 在这里构建图 ...    loss, train_op = ...    with tf.Session() as sess: # 或者: with sv.managed_sess() as sess, 等        # 在这里运行训练步骤 ...        sess.run(train_op)

但我更喜欢先定义我的图,然后再单独运行会话,如下所示(特别是在Jupyter笔记本中)。

在一个单元格中:

with tf.Graph().as_default():    # 在这里构建图 ...    loss, train_op = ...

在另一个单元格中:

with tf.Session() as sess: # 或者: with sv.managed_sess() as sess, 等    # 在这里运行训练步骤 ...    sess.run(train_op)

我注意到第一种方法创建图需要时间。有时我使用多个图,第二种方法是我的唯一选择。为什么一种方法会比另一种更好?


回答:

在常规的Python脚本中,这两种方法没有区别。但是,如果你使用笔记本,并且单独执行单元格,那么显然不重新创建图比从头开始创建要快。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注