Вот пример того, как вы можете применить эти виды преобразований:
def parse_data_train(image, label):
# Function that we will use to parse the training data
image = tf.image.random_crop(image, [WIDTH, HEIGHT, NUM_CHANNELS])
image = tf.image.random_flip_left_right(image)
return image, label
def parse_data_val_test(image, label):
# Function that we will use to parse the validation/test data
image = tf.image.resize_with_crop_or_pad(image, WIDTH, HEIGHT)
return image, label
WIDTH, HEIGHT, NUM_CHANNELS = 10, 10, 3
train_data = np.random.rand(100, 32, 32, 3)
train_labels = np.random.rand(100, 10)
test_data = np.random.rand(10, 32, 32, 3)
test_labels = np.random.rand(10, 10)
# Creating the training dataset
train_dataset = tf.data.Dataset.from_tensor_slices((train_data, train_labels))
# Shuffle of the dataset upon creation and shuffle it after each epoch
train_dataset = train_dataset.shuffle(buffer_size=train_data.shape[0], reshuffle_each_iteration=True)
# Apply the transformations on the dataset
train_dataset = train_dataset.map(parse_data_train)
# Create the batches
train_dataset = train_dataset.batch(10)
# Create the test dataset
test_dataset = tf.data.Dataset.from_tensor_slices((test_data, test_labels))
# No need to shuffle since we just validate/test on this dataset
# Apply the transformations for the validation/test dataset
test_dataset = test_dataset.map(parse_data_val_test)
# Create the batches
test_dataset = test_dataset.batch(10)
Подводя итог, я бы предложил опираться на tf.data.Dataset.map()
, потому что вы можете легко создавать свои собственные методы, где вы можете сложитьпреобразования, которые вы хотите применить к каждому образцу набора данных.