ImageDataGenerator.flow_from_directory(...) 一时失言乱红尘 2023-07-17 15:36 15阅读 0赞 # ![20191009191333910.png][] # # [日萌社][Link 1] # [人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)][AI_Keras PyTorch MXNet TensorFlow PaddlePaddle] -------------------- ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70][] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 1][] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 2][] ImageDataGenerator第一种用法: #x_batch/lable_batch分别为一个批量大小(batch_size)的训练数据和标签值 for x_batch, lable_batch in ImageDataGenerator(...).flow(训练集,标签集,batch_size=批量大小) model.fit(x_batch, lable_batch) ImageDataGenerator第二种用法: #这里的input输入是单个图片的数据,可以是np.array类型的图片数据 input = ImageDataGenerator(...).random_transform(input) ImageDataGenerator第三种用法: #target_size=(N, N) 可以指定读取出来的图片大小直接转换为N*N,这样可以方便地把不适配模型要求的输入大小的图片直接转换为指定大小。 #class_mode='binary'表示不论类别文件夹的名字是数字/字母/中文,都会自动把 所有每个类别文件夹的名字 对应转换为 0~N的 类别值。 train_generator = ImageDataGenerator(...).flow_from_directory("目录路径",target_size=(N, N),batch_size=批量大小,class_mode='binary') validation_generator = ImageDataGenerator(...).flow_from_directory("目录路径",target_size,batch_size,class_mode='binary') model.fit_generator(train_generator, steps_per_epoch=N, #steps_per_epoch为每个epoch中遍历批量数据的次数,即steps_per_epoch*batch_size等于数据集的样本数 epochs=N, #epochs为遍历数据集的次数,epoch值为N,那么就遍历数据集N次,比如默认对同一个数据集完整遍历N次 validation_data=validation_generator, validation_steps=N) #validation_steps 同 steps_per_epoch ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 3][] # 定义输入数据的大小和批次大小 image_size = (224, 224) batch_size = 32 #即使读取的图片分辨率大小和image_size指定的大小不一致也没关系, #会对输入图片进行自动截取image_size指定的大小。 #比如VGG16的模型中需要输入的大小为image_size = (224, 224), #那么即使输入的图片分辨率大小和VGG16指定的大小不一致也没关系, #即可使用flow_from_directory(...,target_size=image_size,...)指定image_size=(224, 224), #来读取不符合代销的文件,那么该函数会对输入图片进行自动截取image_size指定的大小 train_gen = ImageDataGenerator(...).flow_from_directory(train_dir, target_size=image_size, batch_size=batch_size, class_mode='binary', shuffle=True) ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 4][] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 5][] -------------------- 例子1:使用ImageDataGenerator(...).flow_from_directory(...) 读取以下格式的数据集文件 ImageDataGenerator(...).flow_from_directory(...,class_mode='binary',...) 表示读取的每个分类文件夹名字自动会被转换为0/1/2/3/...等数字 然后可以使用 model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.sparse_categorical_crossentropy, metrics = [tf.keras.metrics.sparse_categorical_accuracy]) #也可以使用 metrics=['accuracy'] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 6][] -------------------- 例子2:使用ImageDataGenerator(...).flow_from_directory(...) 读取以下格式的数据集文件 ImageDataGenerator(...).flow_from_directory(...,class_mode='binary',...) 表示读取的每个分类文件夹名字自动会被转换为0/1/2/3/...等数字 然后可以使用 model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.sparse_categorical_crossentropy, metrics = [tf.keras.metrics.sparse_categorical_accuracy]) #也可以使用 metrics=['accuracy'] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 7][] [20191009191333910.png]: /images/20230528/d2cef07a01f844bbbd5d3ab68c46c2fc.png [Link 1]: http://www.rimengshe.com/ [AI_Keras PyTorch MXNet TensorFlow PaddlePaddle]: https://blog.csdn.net/zimiao552147572/article/details/88867161 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70]: /images/20230528/3514f810875c4ed7a55544e753e75fc3.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 1]: /images/20230528/c4b23d88c3e242ee925ed29e3ff2e68f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 2]: /images/20230528/4b1e2acd85414dd3939c4cfee903e2ee.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 3]: /images/20230528/f5a93d63dd5e47368f15ec0a34f2cb1c.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 4]: /images/20230528/618640fbb4234edfb6c4100499302798.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 5]: /images/20230528/693e690996a34cec96561f3f8cc5da7e.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 6]: /images/20230528/914f528b7db24250883c90f61df29dde.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ppbWlhbzU1MjE0NzU3Mg_size_16_color_FFFFFF_t_70 7]: /images/20230528/8a3a36de2b5d4599839de88ec5bed7b3.png
还没有评论,来说两句吧...