在tf.data.Dataset对象中访问图像和标签



我正在遵循keras图像分类教程。我已经创建了一个tf.data.Dataset,并使用.take()方法指定了单个批次:

train_ds = tf.keras.preprocessing.image_dataset_from_directory(
"data",
validation_split=0.2,
subset="training",
image_size=(224,224),
batch_size=32)
train_batch = train_ds.take(1)

检查train_batch对象,正如预期的那样,我看到它由两个对象组成:图像和标签:

<TakeDataset shapes: ((None, 224, 224, 3), (None,)), types: (tf.float32, tf.int32)>

教程说明使用以下代码来绘制此批处理中的图像:

for images, labels in train_batch:
for i in range(32):
ax = plt.subplot(4, 8, i + 1)
plt.imshow(images[i].numpy().astype("uint8"))

我的问题是for images, labels in train_batch:如何分别指定图像和标签。除了enumerate,我还没有遇到在for循环中指定两个变量的情况。这是访问批量图像和标签的唯一方法吗?

train_batch返回一个元组(图像,标签)。以

下面的代码为例
x=(1,2,3)
a,b,c=x
print ('a= ', a,' b= ',b,' c= ', c)
# the result will be a=  1  b=  2  c=  3

同样的过程也发生在for循环中,images接收元组的image部分,labels接收元组的label部分。

最新更新