我使用了“flow_from_directory”,但我的“lose”没有减少。我注意到当我运行“fit_generator”时,它显示有1个类,尽管我的掩码有3个类。我的问题是,我们是否需要在“datagen.flow_from_directory”中指示有多少个类?您是否看到“datagen.flow_from_directory”调用中的任何错误:
我的目录结构如下所示:
我的代码如下所示:
inputs = tf.keras.layers.Input(shape=(IMAGE_SIZE, IMAGE_SIZE, 3), name="input_image")
model = tf.keras.applications.ResNet50(input_tensor=inputs, weights=None, include_top=true)
LR = 0.0001
optim = keras.optimizers.Adam(LR)
dice_loss_se2 = sm.losses.DiceLoss()
mae = tf.keras.losses.MeanAbsoluteError( )
metrics = [ mae,sm.metrics.IOUScore(threshold=0.5), sm.metrics.FScore(threshold=0.5) , dice_loss_se2]
model.compile(optimizer=optim,loss= dice_loss_se2,metrics= metrics)
image_datagen = ImageDataGenerator()
mask_datagen = ImageDataGenerator()
image_generator =image_datagen.flow_from_directory( "/mydata/train/image", target_size=(IMAGE_SIZE, IMAGE_SIZE)
, class_mode = None,
)
mask_generator = mask_datagen.flow_from_directory("/mydata/train/mask" , target_size=(IMAGE_SIZE, IMAGE_SIZE)
, class_mode = None,
)
train_generator = zip(image_generator, mask_generator)
train_steps = 1212//batch_size
#---------------------------
image_generator_val =image_datagen.flow_from_directory( "/mydata/Validation/image", target_size=(IMAGE_SIZE, IMAGE_SIZE)
, class_mode = None,
)
mask_generator_val = mask_datagen.flow_from_directory("/mydata/Validation/mask" , target_size=(IMAGE_SIZE, IMAGE_SIZE)
, class_mode = None,
)
)
val_generator = zip(image_generator_val, mask_generator_val)
val_steps = 250//batch_size
history =model.fit_generator(train_generator, validation_data=val_generator , steps_per_epoch=train_steps, validation_steps=val_steps , epochs=epochs, verbose=1)
2条答案
按热度按时间e5nqia271#
你的问题出在你的目录结构上。你需要的是如下所示的目录结构
你只得到一个类,因为生成器只看到img类。2所以只要按照上面的目录结构移动你的图像
piwo6bdm2#
他们还做了一种方式,特定子集的训练或验证或指定文件夹,我的文件夹结构(目录)是见下.
找到10张图片,属于10个类。
Output example