gpt4 book ai didi

python - 为什么在这种情况下 feed_dict 使用更少的内存?

转载 作者:行者123 更新时间:2023-12-01 01:13:23 25 4
gpt4 key购买 nike

.from_tensor_slices 相比,为什么 feed_dict 使用更少的 GPU 内存?我认为在下面的行中,Tensorflow 会在迭代 GPU 中的数据之前将整个数据加载到 GPU。

sess.run(iterator.initializer, feed_dict={features_placeholder: features,
labels_placeholder: labels})

来自文档 ( https://www.tensorflow.org/guide/datasets#reading_input_data )

最佳答案

原因是 .from_tensor_slices 将整个数据集存储在 TensorFlow 图本身中(以 tf.constant 的形式),而 feed_dict 仅传递值本身。一旦您将数据分成多个批处理并开始使用 feed_dict 逐批将它们输入 TensorFlow,差异就会很明显,因为只有当前批处理才会被复制到 GPU 上。使用 .from_tensor_slices 将导致在 GPU 中同时拥有整个数据集,即使您只在一小部分数据集上进行训练。

如果您一次提供整个数据集并且仍然观察到明显的差异,我的猜测是,当您的数据成为计算图的一部分时,tf.constant 操作会引入一些内存开销本身会导致整体内存消耗更大。

查看文档 https://www.tensorflow.org/api_docs/python/tf/data/Dataset#from_tensor_slices

Note that if tensors contains a NumPy array, and eager execution is not enabled, the values will be embedded in the graph as one or more tf.constant operations. For large datasets (> 1 GB), this can waste memory and run into byte limits of graph serialization.

关于python - 为什么在这种情况下 feed_dict 使用更少的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54610704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com