栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么`tf.constant()`的值在TensorFlow的内存中多次存储?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么`tf.constant()`的值在TensorFlow的内存中多次存储?

因为恒定张量的数据已嵌入到图定义中。这意味着这些数据既存储在维护图定义的客户端中,又存储在运行时中,为所有张量分配其自己的内存。

IE浏览器,尝试

a = tf.constant([1,2])tf.get_default_graph().as_graph_def()

你会看到的

    dtype: DT_INT32    tensor_shape {      dim {        size: 2      }    }    tensor_content: "0100000002000000"  }

tensor_content
场是原始内容,一样的
np.array([1,2], dtype=np.int32).tobytes()

现在,要查看运行时分配,可以使用运行

export TF_CPP_MIN_LOG_LEVEL=1

如果您使用进行任何评估

a
,都会看到类似的内容

2017-02-24 16:13:58: I tensorflow/core/framework/log_memory.cc:35] __LOG_MEMORY__ MemoryLogTensorOutput { step_id: 1 kernel_name: "Const_1/_1" tensor { dtype: DT_INT32 shape { dim { size: 2 } } allocation_description { requested_bytes: 8 allocated_bytes: 256 allocator_name: "cuda_host_bfc" allocation_id: 1 ptr: 8605532160 } } }

这意味着运行时要求分配8个字节,而TF实际上分配了256个字节。(目前实际分配多少数据的选择有些随意-bfc_allocator.cc)

将常量嵌入图形中使进行基于图形的优化(如常量折叠)变得更加容易。但这也意味着大常数是无效的。同样,使用大常量是导致图形大小超过2GB限制的常见原因。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451844.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号