Каждая строка вашего train_dataset
является диктатом, а не кортежем. Таким образом, вы не можете использовать lambda
как lambda image, coarse_label, label
.
import tensorflow as tf
import tensorflow_datasets as tfds
train_dataset = tfds.load(name="cifar100", split=tfds.Split.TRAIN)
print(train_dataset.output_shapes)
# {'image': TensorShape([32, 32, 3]), 'label': TensorShape([]), 'coarse_label': TensorShape([])}
Вы должны использовать его следующим образом:
def transform_images(row, size):
x_train = tf.image.resize(row['image'], (size, size))
x_train = x_train / 255
return x_train, row['coarse_label'], row['label']
train_dataset = train_dataset.map(lambda row:transform_images(row, 16))
print(train_dataset.output_shapes)
# (TensorShape([16, 16, 3]), TensorShape([]), TensorShape([]))