gpt4 book ai didi

python - 验证精度卡住,精度低

转载 作者:行者123 更新时间:2023-12-04 01:15:58 25 4
gpt4 key购买 nike

我想用 Tensorflow 创建一个检测花朵的机器学习模型。我走进了大自然,拍了 4 个不同物种的照片(每类约 600 张,一类有 700 张)。

我使用 Tensorflow Train Generator 加载这些图像:

 train_datagen = ImageDataGenerator(rescale=1./255,
shear_range=0.2,
zoom_range=0.15,
brightness_range=[0.7, 1.4],
fill_mode='nearest',
vertical_flip=True,
horizontal_flip=True,
rotation_range=15,


width_shift_range=0.1,
height_shift_range=0.1,

validation_split=0.2)

train_generator = train_datagen.flow_from_directory(
pfad,
target_size=(imageShape[0],imageShape[1]),
batch_size=batchSize,
class_mode='categorical',
subset='training',
seed=1,
shuffle=False,
#save_to_dir=r'G:\test'
)

validation_generator = train_datagen.flow_from_directory(
pfad,
target_size=(imageShape[0],imageShape[1]),
batch_size=batchSize,
shuffle=False,
seed=1,
class_mode='categorical',
subset='validation')

然后我正在创建一个看起来像这样的简单模型:

model = tf.keras.Sequential([



keras.layers.Conv2D(128, (3,3), activation='relu', input_shape=(imageShape[0], imageShape[1],3)),
keras.layers.MaxPooling2D(2,2),
keras.layers.Dropout(0.5),

keras.layers.Conv2D(256, (3,3), activation='relu'),

keras.layers.MaxPooling2D(2,2),

keras.layers.Conv2D(512, (3,3), activation='relu'),

keras.layers.MaxPooling2D(2,2),

keras.layers.Flatten(),





keras.layers.Dense(280, activation='relu'),

keras.layers.Dense(4, activation='softmax')
])


opt = tf.keras.optimizers.SGD(learning_rate=0.001,decay=1e-5)
model.compile(loss='categorical_crossentropy',
optimizer= opt,
metrics=['accuracy'])

并且要开始训练过程(CPU):

history=model.fit(
train_generator,
steps_per_epoch = train_generator.samples // batchSize,
validation_data = validation_generator,
validation_steps = validation_generator.samples // batchSize,
epochs = 200,callbacks=[checkpoint,early,tensorboard],workers=-1)

结果应该是我的验证精度提高了,但它从 0.3375 开始,并在整个训练过程中保持在这个水平。验证损失 (1.3737) 减少 0.001。精度从 0.15 开始,但会增加。

为什么我的验证准确性卡住了?我使用正确的损失吗?还是我错误地构建了模型?我的 Tensorflow Train Generator 是否对标签进行热编码?

谢谢

最佳答案

我使用不带任何参数的 RMSprop() 解决了这个问题。

所以我改变了:

opt = tf.keras.optimizers.SGD(learning_rate=0.001,decay=1e-5)
model.compile(loss='categorical_crossentropy',optimizer= opt, metrics=['accuracy'])

到:

    opt = tf.keras.optimizers.RMSprop()
model.compile(loss='categorical_crossentropy',
optimizer= opt,
metrics=['accuracy'])

关于python - 验证精度卡住,精度低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63372983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com