【发布时间】:2020-07-08 05:25:05
【问题描述】:
一点背景知识,我正在将大约 60,000 张图像加载到 colab 以训练 GAN。我已经将它们上传到 Drive 并且目录结构包含 root 内不同类(大约 7-8 个)的文件夹。我将它们加载到 colab 如下:
root = "drive/My Drive/data/images"
root = pathlib.Path(root)
list_ds = tf.data.Dataset.list_files(str(root/'*/*'))
for f in list_ds.take(3):
print(f.numpy())
给出输出:
b'drive/My Drive/data/images/folder_1/2994.jpg'
b'drive/My Drive/data/images/folder_1/6628.jpg'
b'drive/My Drive/data/images/folder_2/37872.jpg'
我正在进一步处理它们如下:
def process_path(file_path):
label = tf.strings.split(file_path, '/')[-2]
image = tf.io.read_file(file_path)
image = tf.image.decode_jpeg(image)
image = tf.image.convert_image_dtype(image, tf.float32)
return image#, label
ds = list_ds.map(process_path)
BUFFER_SIZE = 60000
BATCH_SIZE = 128
train_dataset = ds.shuffle(BUFFER_SIZE).batch(BATCH_SIZE)
每张图片的大小为128x128。现在遇到问题,当我尝试在 colab 中查看批处理时,执行将永远持续并且永不停止,例如,使用以下代码:
for batch in train_dataset.take(4):
print([arr.numpy() for arr in batch])
之前我认为 batch_size 可能是一个问题,所以尝试更改它,但仍然是同样的问题。我正在加载大量文件,这可能是由于 colab 造成的问题吗?
还是由于使用 MNIST(28x28) 时图像的大小?如果有,有哪些可能的解决方案?
提前致谢。
编辑: 删除 shuffle 语句后,最后一行将在几秒钟内执行。所以我认为这可能是由于 BUFFER_SIZE 洗牌的问题,但即使减少了 BUFFER_SIZE,它仍然需要很长时间才能执行。有什么解决方法吗?
【问题讨论】:
-
您是否尝试检查是否有可用的 gpu?
-
是的,我用 CPU 和 GPU 都试过了。
标签: python google-colaboratory tensorflow2.0