救救孩子吧,孩子的头都快秃了
具体就是这样,一张图就能说明问题,不管我给了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调大了