【问题标题】:Feeding large numpy arrays into TensorFlow estimators via tf.data.Dataset通过 tf.data.Dataset 将大型 numpy 数组输入 TensorFlow 估计器
【发布时间】:2019-02-27 03:58:30
【问题描述】:

TensorFlow 的 tf.data.Dataset documentation on consuming numpy arrays 指出,为了将 numpy 数组与 Dataset API 结合使用,数组必须足够小(总共

但是,如果您将Dataset 与估算器结合使用(占位符不可用),则文档没有提供处理没有占位符的大型数组的解决方案。

是否有其他选项可以将占位符值传递到可以使用的估算器中,或者是提供tfrecordcsv 格式数据的解决方案?

【问题讨论】:

    标签: python arrays numpy tensorflow tensorflow-estimator


    【解决方案1】:

    您可以在创建数据集对象之前使用np.splitfrom_generator

    chunks = list(np.split(array, 1000))
    
    def gen():
        for i in chunks:
            yield i
    
    dataset = tf.data.Dataset.from_generator(gen, tf.float32)
    dataset = dataset.shuffle(shuffle_buffer_size)
    ...
    

    您可以通过随机播放来控制数据集的大小。它一次只会加载指定的数量。

    【讨论】:

    • 到目前为止我一直在使用from_generator。我的主要问题是,在您耗尽数据集迭代器并重复自身之后,再次调用生成器代码。由于数据需要一些广泛的预处理,因此在整个模型中一遍又一遍地调用生成器会导致每 200-300 步显着减速。
    猜你喜欢
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    相关资源
    最近更新 更多