【问题标题】:How to set the number of images in ParallelMapDataset datatype in Tensorflow?如何在 Tensorflow 中设置 ParallelMapDataset 数据类型中的图像数量?
【发布时间】:2021-10-18 05:59:06
【问题描述】:
dataset, info = tfds.load('oxford_iiit_pet:3.*.*', with_info=True)

train_images = dataset['train']

test_images = dataset['test']

train_batches = ( 
    train_images
    .cache()
    .shuffle(BUFFER_SIZE)
    .batch(BATCH_SIZE)
    .prefetch(buffer_size=tf.data.AUTOTUNE))

test_batches = test_images.batch(BATCH_SIZE)

现在我想将 test_images 的大小减少到 100 个图像。 我期待一些代码,例如:

test_images = test_images[100]

但这会报错:

'ParallelMapDataset' object is not subscriptable

【问题讨论】:

  • test_batches = test_images.take((100 // BATCH_SIZE) + 1) 适合您吗?如果您只需要 100 张图片,请先使用 take(100),然后再使用批处理。
  • 是的......它工作......谢谢;)
  • @Frightera 我建议您将此作为答案发布,以便 OP 随后可以接受
  • @desertnaut 谢谢你的建议。
  • @Frightera 随时 ;)

标签: python tensorflow keras data-structures deep-learning


【解决方案1】:

使用take() 方法,您可以从目标数据集中获取批次或项目。

如果数据集是批处理的:

test_images.take((100 // BATCH_SIZE) + 1)

当您对数据集进行批处理时,它将包含批次或组。

假设您批量处理大小为 32 的数据,test_images.take(1) 将返回 32 个元素,即单个批次。 test_images.take(2) 将返回 64 个元素等。


如果没有批处理:

test_images.take(100)

与批处理数据集不同,数据集将返回已传递到take() 方法的元素数量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2020-11-10
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多