Up shuffle, batch, buffer 作成: 2021-04-25
更新: 2021-04-30


    ここまでの経過:
      $ source \[venv のパス\]/venv/bin/activate (venv) $ python >>> import tensorflow as tf >>> tf.enable_eager_execution() >>> TRAIN_DATA_URL = \ 'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz' >>> data_root_orig = \ tf.keras.utils.get_file(origin=TRAIN_DATA_URL, fname='flower_photos', untar=True) >>> import pathlib >>> data_root = pathlib.Path(data_root_orig) >>> all_image_paths = list(data_root.glob('*/*')) >>> all_image_paths = [str(path) for path in all_image_paths] >>> label_names = \ ... sorted(item.name for item in data_root.glob('*/') if item.is_dir()) >>> label_to_index = \ ... dict((name, index) for index,name in enumerate(label_names)) >>> all_image_labels = \ ... [label_to_index[pathlib.Path(path).parent.name] for path in all_image_paths] >>> def raw_to_tensor(path): ... image_raw = tf.io.read_file(path) ... return tf.image.decode_image(image_raw, channels=3) ... >>> def load_and_preprocess_image(path): ... img_tensor = raw_to_tensor(path) ... img_final = tf.image.resize(img_tensor, [192, 192]) ... img_final /= 255.0 ... return image ... >>> path_ds = \ ... tf.data.Dataset.from_tensor_slices(all_image_paths) >>> label_ds = \ ... tf.data.Dataset.from_tensor_slices(tf.cast(all_image_labels, tf.int64)) >>> AUTOTUNE = tf.data.experimental.AUTOTUNE >>> image_ds = \ ... path_ds.map(load_and_preprocess_image, num_parallel_calls=AUTOTUNE) >>> image_label_ds \ ... = tf.data.Dataset.zip((image_ds, label_ds))


    shuffle
      >>> image_count = len(all_image_paths) >>> ds = image_label_ds.shuffle(buffer_size=image_count)


    batch
      >>> BATCH_SIZE = 2 >>> ds = ds.batch(BATCH_SIZE) >>>> ds <DatasetV1Adapter shapes: ((?, 3, 3, 3), (?,)), types: (tf.float32, tf.string)>


    buffer
      >>>> ds = ds.prefetch(buffer_size=AUTOTUNE) >>>> ds