Tensorflow:使用tf.Keras图层或tf.Estimator API时,何时需要运行tf.Session()?

时间:2018-12-20 08:10:04

标签: python tensorflow keras

我正在尝试使TF“图表和会话”指南以及TF“ Keras”指南和TF估算器指南中的信息协调一致。现在在前者中,它说a tf.Session使计算图可以访问物理硬件以执行图并训练模型。就像最初学习TF的教程一样,您需要使用Session来运行任何东西:变量指南,张量指南等。但是,在TF Keras指南中,示例似乎在运行时没有显式调用{{1} }或通常的tf.Session,Keras模型也不使用急切的执行。对于Estimators API也是如此。

我有几个代码示例。他们中的一些人使用呼叫的会话,而其他人则不使用。我希望有人能阐明将with tf.Session() as sess:与Keras层或Estimators一起使用的要求的规则是什么。我的意思是,您似乎可以为keras估算器或标准TF.estimator设置tf.Session之类的东西,并为multi-gpu等设置设置。

这是TF Keras功能API的示例。请注意,不会呼叫该会话:

run_configs

感谢您提供任何信息或说明。

1 个答案:

答案 0 :(得分:1)

仅使用Keras时,不需要调用tf.Session()。如使用tf.GraphKeys.GLOBAL_STEP所见,这在使用tensorflow后端时被调用。仅在使用tensorflow后端而不是theanoCNTK时调用此方法。

关于通过tf.Session()调用使用Tensorflow接口,对此进行了here的解释,它只是使用tf.Session()作为Keras与 pure-TensorFlow 张量和/或函数。

您可以看到一个使用tf.Session()后端功能将set_session()与Keras结合使用的示例:

session_conf = tf.ConfigProto(intra_op_parallelism_threads=1, inter_op_parallelism_threads=1)

from keras import backend as K

sess = tf.Session(graph=tf.get_default_graph(), config=session_conf)
K.set_session(sess)