Kas*_*sen 2 python deep-learning keras tensorflow
目前,我正在尝试在 VGG-16 模型上训练数据集。问题是准确度没有太大变化,但它并没有被固定在一个固定的准确度上。情节图可以在下面看到。任何建议为什么会发生这种情况?
我已经按照几个指南来解决这个关于卡住精度的问题,但它们不起作用。

编辑:


该模型的输入大小是 600 张 224x224x3 的图像。此外,还有两个标签 dog 和 cat (0,1)。
特性
imageSize = (224,224,3)
epochs = 25
batch_size = 32
Run Code Online (Sandbox Code Playgroud)
模型
from keras.applications.vgg16 import VGG16
vgg = VGG16(input_shape=imageSize,weights=None,include_top=False)
x = Flatten()(vgg.output)
prediction = Dense(1,activation='sigmoid')(x)
model = Model(inputs=vgg.input,outputs=prediction)
model.compile(loss='binary_crossentropy', optimizer='adam',metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
图像生成器
from keras.applications.vgg16 import preprocess_input
from keras.preprocessing import image
from keras.preprocessing.image import ImageDataGenerator
imgGen = ImageDataGenerator(rotation_range=20,
width_shift_range=0.1,
height_shift_range=0.1,
shear_range=0.1,
zoom_range=0.2,
horizontal_flip=True,
vertical_flip=True,
preprocessing_function = preprocess_input)
Run Code Online (Sandbox Code Playgroud)
拟合模型
r = model.fit_generator(imgGen.flow(trainX, trainY, batch_size=batch_size),
validation_data = imgGen.flow(testX, testY, batch_size=batch_size),
epochs=epochs,
steps_per_epoch=len(trainX)//batch_size,
validation_steps=len(testX)//batch_size,
verbose = 1,
)
Run Code Online (Sandbox Code Playgroud)
不要使用adam优化器来训练 VGG,众所周知它会因为 VGG 网络中的大量参数而失败。只需使用sgd和调整学习率,比如从 0.01 开始,增加 10 倍或 0.1 倍,直到训练损失很好地减少。
小智 0
25 epoch 不够,尝试 100 epoch 或 200 epoch
def model(self):
inputs = keras.layers.Input(shape=self.input_Shape)
x = keras.layers.Conv2D(16, (3,3), activation='relu')(inputs)
x = keras.layers.MaxPooling2D(2,2)(x)
x = keras.layers.Conv2D(32,(3,3),activation='relu')(x)
x = keras.layers.MaxPooling2D(2,2)(x)
x = keras.layers.Conv2D(64,(3,3),activation='relu')(x)
x = keras.layers.MaxPooling2D(2,2)(x)
x = keras.layers.Flatten()(x)
x = keras.layers.Dense(512,activation='relu')(x)
outputs = keras.layers.Dense(1,activation='sigmoid')(x)
model = keras.models.Model(inputs, outputs)
model.summary()
model.compile(optimizer=RMSprop(lr=0.001),
loss='binary_crossentropy',
metrics = ['acc'])
return model
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4070 次 |
| 最近记录: |