0

我正在关注关于图像分类的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 循环中指定两个变量。这是批量访问图像和标签的唯一方法吗?

4

1 回答 1

0

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 循环中,图像接收元组的图像部分,标签接收元组的标签部分。

于 2021-02-01T00:06:23.603 回答