我想用Tensorflow创建一个机器学习模型来检测花朵。我去了大自然,拍了4个不同物种的照片(每班600个,一班700个)
我使用Tensorflow序列生成器加载这些图像:
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序列发生器是否对标签进行热编码
谢谢
我使用RMSprop()解决了这个问题,没有任何参数
所以我从:
致:
也许你的学习率太高了
使用learning rate=0.000001,如果这不起作用,请尝试其他优化器,如Adam
这是一个类似的例子,除了4个分类类之外,下面的是二进制的。您可能希望将损失更改为分类交叉熵,在训练和测试生成器中将class_模式从二进制更改为分类,并将最终密集层激活更改为softmax。我仍然能够使用model.fit_生成器()
相关问题 更多 >
编程相关推荐