python - 如何在 python 对象中有效地使用 Session 来将 tensorflow 作为实现细节?

标签 python tensorflow scikit-learn

我正在实现一个自定义 sklearn Transformer,它需要一个已在 Tensorflow 中编码的优化步骤。 TF 需要一个Session,它应该用作上下文管理器或显式关闭。问题是:向 Transformer 添加 close() 方法会很奇怪(并且对用户来说是意想不到的),关闭 session 的最佳位置是什么?每次调用 fit() 时,我是否应该打开和关闭一个新 session ?或者我应该保持它打开并将 session.close() 留给变压器的 __del__ 方法?还有其他选择吗?

最佳答案

不要在每次函数调用时都打开 session ,如果多次调用该函数,效率可能会非常低。

如果由于某种原因,您不想公开上下文管理器,那么您需要自己打开 session ,并将其保持打开状态。对于用户来说,这可能更简单一些,但与其他对象或库共享 tf.Session 可能会更困难。试图隐藏您正在使用 TensorFlow 的事实可能有点徒劳,因为它可能与其他依赖 GPU 的库不兼容。 (用户还需要安装tensorflow才能使用该库,他/她肯定知道您正在使用它)。

因此,我不会尝试封装不能或不应该(在我看来)的东西,并为 tf.Session 使用上下文管理器(甚至可能直接使用 tf.Session 本身,如果我不介意公开 tensorflow ,否则将其包装在我自己的上下文管理器中)。

关于python - 如何在 python 对象中有效地使用 Session 来将 tensorflow 作为实现细节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50310515/

相关文章:

python - 加速 sklearn 逻辑回归

python - 如何使用 sklearn 在 Python 中将 N*M 矩阵居中

python - 无法安装 scikit-learn

python - 能够排除 python 中的某些变量

python - 你如何使用django将类似的帖子添加到详细信息页面

python - 最后尝试 vs :with pool as"

python - 使用 bash 脚本处理 JSON

python-2.7 - AudioSet 和 TensorFlow 的理解

TensorFlow: `tf.data.Dataset.from_generator()` 不适用于 Python 3.x 上的字符串

python - 在 TensorFlow 中创建距离矩阵