【问题标题】:Tensorflow : tf.gather doesn't work on big arraysTensorflow:tf.gather 不适用于大数组
【发布时间】:2017-10-10 10:00:54
【问题描述】:

我的 numpy 数组有问题,它的大小为 (29000,200,1024)(7Go)。它是我数据集图像的特征。

加载后,我的函数接收索引以将当前批次构建为张量。 不幸的是,使用:

tf.gather(array, indices) 

冻结。尽管打印例如 array[0] 可以立即工作。 我尝试使用 convert_to_tensor 转换我的 numpy 数组,以便我可以直接使用 array_tensor(indice) 但同样,convert_to_tensor 导致内存限制错误。

有什么解决办法吗?

非常感谢

【问题讨论】:

    标签: arrays numpy tensorflow


    【解决方案1】:

    将 numpy 数组直接传递到 tf op 构造 API 会将其转换为 tf.constant op,其中包含 op 定义中的数据,因此您将整个内容内联到 GraphDef 中,受 2GB GraphDef 限制。

    为避免这种情况,请创建 var=tf.Variable(my_placeholder) 并通过运行 var.initializer, feed_dict={my_placeholder: np_array} 初始化此变量。这会将 numpy 数组数据直接放入变量存储中。

    【讨论】:

    • 感谢您对完整评论的帮助。不幸的是,我还没有会话处理程序。一旦我有了我的 sess,我就可以稍后从图表中获取我的变量,但我不会再有 feed dict 的占位符了......有什么想法吗? tyvm 提前
    • 将占位符保存到全局变量中?
    • 谢谢这似乎工作!不幸的是,打开 numpy 数组 + 将其放入张量会导致 OOM 错误。我需要用另一种方式制作我的批次。
    猜你喜欢
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2021-12-12
    相关资源
    最近更新 更多