精度低 - 迁移学习 + 瓶颈 keras-tensorflow (resnet50)
Low accurcacy - Transfer learning + bottle-neck keras-tensorflow (resnet50)
我正在尝试在 google Colaboratory 笔记本上使用 keras
/tensorflow 进行迁移学习/瓶颈。我的问题是准确率不超过 6%(Kaggle 的狗品种挑战,120 类,数据由 datagen.flow_from_directory
生成)
下面是我的代码,有什么我遗漏的吗?
tr_model=ResNet50(include_top=False,
weights='imagenet',
input_shape = (224, 224, 3),)
datagen = ImageDataGenerator(rescale=1. / 255)
#### Training ####
train_generator = datagen.flow_from_directory(train_data_dir,
target_size=(image_size,image_size),
class_mode=None,
batch_size=batch_size,
shuffle=False)
bottleneck_features_train = tr_model.predict_generator(train_generator)
train_labels = to_categorical(train_generator.classes , num_classes=num_classes)
#### Validation ####
validation_generator = datagen.flow_from_directory(validation_data_dir,
target_size=(image_size,image_size),
class_mode=None,
batch_size=batch_size,
shuffle=False)
bottleneck_features_validation = tr_model.predict_generator(validation_generator)
validation_labels = to_categorical(validation_generator.classes, num_classes=num_classes)
#### Model creation ####
model = Sequential()
model.add(Flatten(input_shape=bottleneck_features_train.shape[1:]))
model.add(Dense(num_class, activation='softmax'))
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
history = model.fit(bottleneck_features_train, train_labels,
epochs=30,
batch_size=batch_size,
validation_data=(bottleneck_features_validation, validation_labels))
我得到一个 val_acc = 0.0592
当我在最后一层使用 ResNet50 时,我得到了 82% 的分数。
谁能发现我的代码有什么问题。
抑制重新缩放并添加预处理帮助很大。
这些修改有很大帮助:
from keras.applications.resnet50 import preprocess_input
datagen = ImageDataGenerator(preprocessing_function=preprocess_input)
我现在的准确率为 80%
我正在尝试在 google Colaboratory 笔记本上使用 keras
/tensorflow 进行迁移学习/瓶颈。我的问题是准确率不超过 6%(Kaggle 的狗品种挑战,120 类,数据由 datagen.flow_from_directory
生成)
下面是我的代码,有什么我遗漏的吗?
tr_model=ResNet50(include_top=False,
weights='imagenet',
input_shape = (224, 224, 3),)
datagen = ImageDataGenerator(rescale=1. / 255)
#### Training ####
train_generator = datagen.flow_from_directory(train_data_dir,
target_size=(image_size,image_size),
class_mode=None,
batch_size=batch_size,
shuffle=False)
bottleneck_features_train = tr_model.predict_generator(train_generator)
train_labels = to_categorical(train_generator.classes , num_classes=num_classes)
#### Validation ####
validation_generator = datagen.flow_from_directory(validation_data_dir,
target_size=(image_size,image_size),
class_mode=None,
batch_size=batch_size,
shuffle=False)
bottleneck_features_validation = tr_model.predict_generator(validation_generator)
validation_labels = to_categorical(validation_generator.classes, num_classes=num_classes)
#### Model creation ####
model = Sequential()
model.add(Flatten(input_shape=bottleneck_features_train.shape[1:]))
model.add(Dense(num_class, activation='softmax'))
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
history = model.fit(bottleneck_features_train, train_labels,
epochs=30,
batch_size=batch_size,
validation_data=(bottleneck_features_validation, validation_labels))
我得到一个 val_acc = 0.0592
当我在最后一层使用 ResNet50 时,我得到了 82% 的分数。
谁能发现我的代码有什么问题。
抑制重新缩放并添加预处理帮助很大。
这些修改有很大帮助:
from keras.applications.resnet50 import preprocess_input
datagen = ImageDataGenerator(preprocessing_function=preprocess_input)
我现在的准确率为 80%