gpt4 book ai didi

numpy - 将.npy(numpy文件)馈入tensorflow数据管道

转载 作者:行者123 更新时间:2023-12-04 02:40:28 27 4
gpt4 key购买 nike

Tensorflow似乎缺少“ .npy”文件的阅读器。
如何将我的数据文件读入新的tensorflow.data.Dataset点线中?
我的数据不适合存储在内存中。

每个对象都保存在单独的“ .npy”文件中。每个文件包含2个不同的ndarrays作为特征,并包含一个标量作为其标签。

最佳答案

您的数据是否适合内存?如果是这样,您可以按照文档Consuming NumPy Arrays部分中的说明进行操作:

消耗NumPy数组
如果所有输入数据都适合内存,从它们创建数据集的最简单方法是将它们转换为tf.Tensor对象并使用Dataset.from_tensor_slices()。

# Load the training data into two NumPy arrays, for example using `np.load()`.
with np.load("/var/data/training_data.npy") as data:
features = data["features"]
labels = data["labels"]

# Assume that each row of `features` corresponds to the same row as `labels`.
assert features.shape[0] == labels.shape[0]

dataset = tf.data.Dataset.from_tensor_slices((features, labels))

如果文件不适合内存,似乎唯一推荐的方法是先将 npy数据转换为 TFRecord格式,然后使用 TFRecord数据集格式,可以流式传输而没有完全加载到内存中。
Here is a post with some instructions.
FWIW,对我来说, TFRecord不能直接用npy文件的目录名或文件名实例化似乎让我感到疯狂,但这似乎是普通Tensorflow的局限性。
如果您可以将单个大npy文件拆分为较小的文件,每个文件大致代表一个批次进行训练,那么您可以在Keras中编写一个自定义数据生成器,该生成器将仅生成当前批次所需的数据。
通常,如果您的数据集无法容纳在内存中,则将其存储为一个大的npy文件将使其很难使用,并且最好您首先将数据重新格式化为TFRecord或多个npy文件,然后再使用其他方法。

关于numpy - 将.npy(numpy文件)馈入tensorflow数据管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48889482/

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