首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用ImageDataGenerator实现数据标准化

利用ImageDataGenerator实现数据标准化
EN

Stack Overflow用户
提问于 2021-12-03 14:31:58
回答 1查看 107关注 0票数 1

我有一个名为“train”的文件夹,它分为8个子文件夹,每个子文件夹包含一个类的数据(图像)(因此我的数据集是一个包含8个类的多类文件夹)。现在我有以下问题:

  1. 我需要从特性上进行标准化,因此我需要使用datagen.fit( xtrain ),我不知道如何用我的所有数据创建x _train,这些数据是在不同的文件夹中分离的,因为我以前没有使用过python处理过图像。注意:我有足够的内存一次存储所有的数据。
  2. 既然我有8个类,那么统计数据是否分别计算在每个类上,如果是这样的话,我如何使用.fit( x_train)来实现这一点?
EN

回答 1

Stack Overflow用户

发布于 2021-12-06 09:18:03

请按照下面的示例代码片段来解决您的查询。(我使用了两个类的20个图像数据集)

代码语言:javascript
复制
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator

PATH ="/train/"   #path to your train directory which contains 8 subfolders

train_datagen = ImageDataGenerator(rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)
train_generator = train_datagen.flow_from_directory(PATH, target_size=(50, 50), batch_size=5, class_mode='binary')  #class_mode='categorical'

输出:

代码语言:javascript
复制
Found 20 images belonging to 2 classes.

定义和编译模型之后,将此数据集与模型相匹配。

代码语言:javascript
复制
num_classes = 2   # you can define num_classes = 8

model = tf.keras.Sequential([
  tf.keras.layers.Rescaling(1./255),
  tf.keras.layers.Conv2D(32, 3, activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Conv2D(32, 3, activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Conv2D(32, 3, activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dense(num_classes)
])

model.compile(optimizer='adam',loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])

model.fit(train_generator,steps_per_epoch=2,epochs=5)  # you can define steps_per_epoch=(number of images/batch_size),epochs

有关更多信息,请参考此链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70215951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档