Как дополнительно оптимизировать сверточную нейронную сеть в TensorFlow - PullRequest
1 голос
/ 22 марта 2019

Я пытаюсь классифицировать ограничивающие рамки в наборе данных COCO. Наилучшая точность проверки, которую я сейчас получаю, составляет 60% для подмножества из 8 классов (потеря: 1,1541 - соотв .: 0,6028 - val_loss: 1,2102 - val_acc: 0,5893) после 15 эпох. Используемые изображения преобразуются в оттенки серого и имеют размер 64x64. Общее количество фотографий, используемых для обучения модели, составляет 40604, а набор проверки составляет четверть / половину этого. функция для построения моей нейронной сети выглядит так:

def constructCNN(conv_layer, layer_size, kernel_size, dense_size, dense_layer, dropout, num_classes):
model = Sequential()

model.add(Conv2D(layer_size, (kernel_size, kernel_size), input_shape=trainset.shape[1:]))

model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

for l in range(conv_layer-1):
    model.add(Conv2D(layer_size, (kernel_size, kernel_size)))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
if(dropout):
    model.add(Dropout(0.25))
model.add(Flatten())

for j in range(dense_layer):
    model.add(Dense(dense_size))
    model.add(Activation('relu'))
if(dropout):
    model.add(Dropout(0.25))
model.add(Dense(num_classes))
model.add(Activation('softmax'))

model.compile(loss='categorical_crossentropy',
    optimizer='adam',
    metrics=['accuracy'])

return model

Я пробовал следующие конфигурации: dens_layers = [0,1,2,3], layer_sizes = [32,64,128], dens_sizes = [32,64,128], conv_layers = [1,2,3,4], kernel_sizes = [3,4], dropout = [True / False].

Я также пытался использовать ImageDataGenerator, но это не улучшило мои результаты.

datagen = ImageDataGenerator(
featurewise_center=True,
featurewise_std_normalization=True,
zca_whitening=True, 
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True)

Я ищу предложения, которые могут улучшить производительность моего классификатора.

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