numpy 如何在不使用enumerate的情况下将TensorFlow数据集保存到多个分片

u3r8eeie  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(117)

我有一个包含一些元素的tensorflow数据集,我想用tf.data.Dataset.save保存它,这样每个元素都有自己的分片。因此,如果数据集包含2,000个元素,它将被保存到2,000个分片。
这里的文档只指定了如何创建1个分片,但没有指定如何为每个元素创建一个分片。
下面,我可以使用enumerate来完成它,但是有没有其他方法可以不保存enumerate中的索引呢?

  1. tuple_data = np.array([3, 4])
  2. data = tf.data.Dataset.from_tensor_slices(tuple_data)
  3. data = data.enumerate()
  4. print(list(data.as_numpy_iterator()))
  5. # [(0, 3), (1, 4)]
  6. data.save(path='~/Desktop/1', shard_func=lambda i, x: i)
nsc4cvqm

nsc4cvqm1#

对你的问题没有用,但是如果有人只是想创建分片,让我们提到可以使用随机:

  1. tf.data.experimental.save(trainingdata, "./tmpTrainingData",
  2. shard_func=lambda x, y: np.int64(random.randint(0,99)) )

现在我想知道你的目标是否可以通过调用hash并生成一个int64来实现。即使可以,我猜也有一些碰撞的风险。

相关问题