在keras上的训练,准确率(不管是训练集还是验证集)一直上不去

救救孩子吧,孩子的头都快秃了

具体就是这样,一张图就能说明问题,不管我给了10000张图,还是给了2000张,不管我的损失函数和激活函数怎么变,始终是这个曲线(其实应该更加的平稳)

代码在下面(我用的是jupyter notebook,后端是tensorflow)

import shutil,os

data_original="D:/python/dogs-vs-cats/train"
data_target="D:/python/catsAndDogs"
data_type=["train","test","validation"]

data_target_type=["cat","dog"]

image={
    'train':[0,1000],
    'test':[5000,5500],
    'validation':[5500,6000]
}



for i in data_type:
    for type_ in data_target_type:
        data_folder=f"{data_target}/{i}/{type_}"
        os.makedirs(data_folder,exist_ok=True)
        frames=[f"/{type_}.{p}.jpg" for p in range(image[i][0],image[i][1])]
        for frame in frames:
            shutil.copyfile(data_original+frame,data_folder+frame)

import tensorflow as tf
import os
os.environ['CUDA_VISIBLE_DEVICES'] = "0"
config=tf.compat.v1.ConfigProto()
config.gpu_options.visible_device_list = '0'
config.gpu_options.allow_growth = True
sess=tf.compat.v1.Session(config=config)


from keras import layers,models,optimizers

model = models.Sequential()
model.add(layers.Conv2D(16,(3,3),input_shape=(150,150,3),activation="relu"))#卷积层
model.add(layers.MaxPooling2D(2,2))
model.add(layers.Conv2D(32,(3,3),activation="relu"))#卷积层
model.add(layers.MaxPooling2D(2,2))
model.add(layers.Conv2D(64,(3,3),activation="relu"))#卷积层
model.add(layers.MaxPooling2D(2,2))
model.add(layers.Flatten())#二维数据变成一维向量
model.add(layers.Dense(512,activation='relu'))#全连接层
model.add(layers.Dense(1,activation='sigmoid'))#把神经网络的输出转化成概率表达

model.compile(loss='binary_crossentropy',
              optimizer =  optimizers.RMSprop(learning_rate=0.001),
             metrics=['accuracy']
)


from keras.preprocessing.image import ImageDataGenerator

train_datagen=ImageDataGenerator(rescale=1./255,
                                 shear_range=0.3,
                                 width_shift_range=0.5,
                                 height_shift_range=0.5,
                                 horizontal_flip=True,
                                 zoom_range=25,
                                 fill_mode='nearest'
)

test_datagen=ImageDataGenerator(rescale=1./255)

train_generator=train_datagen.flow_from_directory("D:/python/catsAndDogs/train",
                                                 target_size=(150,150),
                                                 batch_size=20,
                                                  class_mode="binary"
                                                )
test_generator=test_datagen.flow_from_directory("D:/python/catsAndDogs/test",
                                               target_size=(150,150),
                                               batch_size=20,
                                               class_mode="binary"
                                              )

history=model.fit(train_generator,
                  
                  epochs=20,
                  validation_data=test_generator)

 

 

你更改卷积核了吗

 

我知道了,我的zoom_range调大了