【发布时间】:2019-05-18 04:47:23
【问题描述】:
我正在使用预训练的 Inception V3 模型对两个类别进行图像分类。作为一个健全的检查,我在一个包含 20 个图像的小数据集上过度拟合了我的模型。训练结果似乎过度拟合,但我不确定验证准确度和损失的预期输出应该是什么。如何正确执行此健全性检查以查看我的模型是否正常工作?
data = np.array(data, dtype="float")/255.0
labels = np.array(labels,dtype ="uint8")
#test_size is percentage to split into test/train data
(trainX, testX, trainY, testY) = train_test_split(
data,labels,
test_size=0.2,
random_state=42)
img_width, img_height = 299, 299 #InceptionV3 size
epochs = 25
batch_size = 64
#include_top = false to accomodate new classes
base_model = keras.applications.InceptionV3(
weights ='imagenet',
include_top=False,
input_shape = (img_width,img_height,3))
#Classifier Model ontop of Convolutional Model
model_top = keras.models.Sequential()
model_top.add(keras.layers.GlobalAveragePooling2D(input_shape=base_model.output_shape[1:], data_format=None)),
model_top.add(keras.layers.Dense(350,activation='relu'))
#model_top.add(keras.layers.Dropout(0.4))
model_top.add(keras.layers.Dense(1,activation = 'sigmoid'
model = keras.models.Model(inputs = base_model.input, outputs = model_top(base_model.output))
model.compile(optimizer = keras.optimizers.Adam(
lr=0.00001,
beta_1=0.9,
beta_2=0.999,
epsilon=1e-08),
loss='binary_crossentropy',
metrics=['accuracy'])
train_datagen = keras.preprocessing.image.ImageDataGenerator(
zoom_range = 0.05,
width_shift_range = 0.05,
height_shift_range = 0.05,
horizontal_flip = True,
vertical_flip = True,
fill_mode ='nearest')
val_datagen = keras.preprocessing.image.ImageDataGenerator()
train_generator = train_datagen.flow(
trainX,
trainY,
batch_size=batch_size)
validation_generator = val_datagen.flow(
testX,
testY,
batch_size=batch_size)
【问题讨论】:
标签: python machine-learning keras