Как использовать ResNet152 в tenorflow.keras для обучения его собственным данным? - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь построить свою собственную сеть, используя ResNet152 в Colab. Вот часть моего кода:

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

x_train = x_train.astype('float32') 
x_test = x_test.astype('float32') 

# Normalization 
mean = np.mean(x_train, axis=0)
std = np.std(x_train, axis=0)

x_train = (x_train - mean) / (std+1e-7)
x_test = (x_test - mean) / (std+1e-7)

y_train = to_categorical(y_train, num_labels)  
y_test = to_categorical(y_test, num_labels)

Затем увеличение данных

datagen = ImageDataGenerator(
          rotation_range=9,
          width_shift_range=.2, height_shift_range=.2,
          horizontal_flip=True, vertical_flip=True,
          rescale=True,
          validation_split=.2
          )

datagen.fit(x_train)

datagen_train = datagen.flow(x_train, y_train, shuffle=True, subset='training')
datagen_val = datagen.flow(x_train, y_train, shuffle=True, subset='validation')

А затем построение модели:

model = Sequential()
model.add(ResNet152(include_top=False, pooling='avg'))
model.add(Dense(num_labels, activation='softmax'))

for layer in model.layers[:]:
    layer.trainable = True

Но Colab делает меня очень плохим Результаты после установки генератора. Есть ли проблемы в моем коде?

1 Ответ

1 голос
/ 02 февраля 2020

Единственная проблема в вашем коде состоит в том, что вы настраиваете все свои уровни на обучаемые: практически вы не получаете пользу от концепции трансферного обучения; в зависимости от размера вашего собственного набора данных (1) и степени сходства (2) между вашим собственным набором данных и набором данных с предварительной подготовкой, вы должны заморозить разное количество слоев, чтобы получить хорошие результаты.

enter image description here

Изображение выше суммирует то, что я говорил ранее. Я бы начал с тренировки только последнего слоя (плотного) в течение 2-3 эпох, а затем обучил, скажем, последнюю четверть слоев (начиная с индекса 3/4 и заканчивая последним).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...