Python TensorFlow:如果我在图形中处理二次计算,会消耗更多内存吗?

Python TensorFlow:如果我在图形中处理二次计算,会消耗更多内存吗?,python,machine-learning,tensorflow,computer-vision,deep-learning,Python,Machine Learning,Tensorflow,Computer Vision,Deep Learning,如果我有一个来自谷歌(inception-resnet-v2)的训练有素的Imagnet模型,该模型实际上给了我两个输出:logits,以及一个名为end_points的列表,我可以从中提取通过softmax激活执行的最终预测层,即一个名为predictions的变量。然而,这并不能最终给我预测所需的类标签。要做到这一点,我必须在我在图中定义了列操作之后执行label=tf.argmax(预测,1),这样我就不会影响原始计算 或者,我可以使用np.argmax(sess.run(predicti

如果我有一个来自谷歌(inception-resnet-v2)的训练有素的Imagnet模型,该模型实际上给了我两个输出:
logits
,以及一个名为end_points的列表,我可以从中提取通过softmax激活执行的最终预测层,即一个名为
predictions
的变量。然而,这并不能最终给我预测所需的类标签。要做到这一点,我必须在我在图中定义了列操作之后执行
label=tf.argmax(预测,1)
,这样我就不会影响原始计算

或者,我可以使用
np.argmax(sess.run(predictions),1)
,它是从图中计算出来的


我的问题是,如果我选择第一种方法,它会消耗更多内存并影响我的计算(就我可以使用的批处理大小而言)?仅从图中计算必要的标签是否更安全、更好?

当您发出多个
调用时,会缓存图定义。若你们修改了图形,它需要重新编码并再次发送。因此,第一次运行修改后的图形时,
graph_def.SerializeToString
可能会使用一些额外的内存,但这不会影响
。然后运行
步骤

相关逻辑在,请注意检查
self.\u graph.version>self.\u current\u version

 def _extend_graph(self):
    # Ensure any changes to the graph are reflected in the runtime.
    with self._extend_lock:
      if self._graph.version > self._current_version:
        # pylint: disable=protected-access
        graph_def, self._current_version = self._graph._as_graph_def(
            from_version=self._current_version,
            add_shapes=self._add_shapes)
        # pylint: enable=protected-access

        with errors.raise_exception_on_not_ok_status() as status:
          tf_session.TF_ExtendGraph(
              self._session, graph_def.SerializeToString(), status)
        self._opened = True

无论图形的构造顺序如何,
session.run
都不知道您是在训练前添加了
argmax
,还是after@YaroslavBulatov我认为问题是不同的:numpy argmax是否比tensorflow argmax更高效,当两者的输入都来自tensorflow时?@YaroslavBulatov是的,但仅在完成训练后运行的额外图形构造会消耗更多内存吗?意思是说,如果我最初使用当前批处理大小中的最大内存构建图形,如果我重构图形以计算在同一会话中运行的其他操作(我的原始培训保持不变),我的培训是否会受到影响?谢谢您的回答。我是否可以向您确认,在图形中额外定义的任何操作(即使未运行)都将消耗更多内存?似乎使用
tf.argmax
np.argmax
应该非常灵活-但对于更复杂的操作,您建议我在图内还是在图外执行内存考虑?通常在图内执行计算更有效,因为在TensorFlowPython上移动数据会导致内存复制,非常感谢您的见解。这是我从未真正知道的事情!