VGG 16 Проблема низкой точности для классификации графиков повторяемости - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь классифицировать сигналы временных рядов с помощью глубокого обучения. Я создаю графики повторения как цветные изображения RGB. Для классификации я пробую трансфертное обучение и случайно выбрал VGG16. Я выполняю предварительную обработку с помощью функции tf.keras.applications.preprocess_input (x) в тензорном потоке для vgg16 и передаю ее в [0,255] масштабированные изображения в качестве входных данных с размером 140,140. Моя проблема - бинарная классификация, и соотношение классов у меня одинаковое. Хотя тренировка кажется очень хорошей, я получаю очень низкую точность теста. Я изменил верхний слой классификации и инициализировал его весами "imag enet". Обучаем только верхний классификационный слой.

Model: "vgg16"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_2 (InputLayer)         [(None, 140, 140, 3)]     0         
_________________________________________________________________
block1_conv1 (Conv2D)        (None, 140, 140, 64)      1792      
_________________________________________________________________
block1_conv2 (Conv2D)        (None, 140, 140, 64)      36928     
_________________________________________________________________
block1_pool (MaxPooling2D)   (None, 70, 70, 64)        0         
_________________________________________________________________
block2_conv1 (Conv2D)        (None, 70, 70, 128)       73856     
_________________________________________________________________
block2_conv2 (Conv2D)        (None, 70, 70, 128)       147584    
_________________________________________________________________
block2_pool (MaxPooling2D)   (None, 35, 35, 128)       0         
_________________________________________________________________
block3_conv1 (Conv2D)        (None, 35, 35, 256)       295168    
_________________________________________________________________
block3_conv2 (Conv2D)        (None, 35, 35, 256)       590080    
_________________________________________________________________
block3_conv3 (Conv2D)        (None, 35, 35, 256)       590080    
_________________________________________________________________
block3_pool (MaxPooling2D)   (None, 17, 17, 256)       0         
_________________________________________________________________
block4_conv1 (Conv2D)        (None, 17, 17, 512)       1180160   
_________________________________________________________________
block4_conv2 (Conv2D)        (None, 17, 17, 512)       2359808   
_________________________________________________________________
block4_conv3 (Conv2D)        (None, 17, 17, 512)       2359808   
_________________________________________________________________
block4_pool (MaxPooling2D)   (None, 8, 8, 512)         0         
_________________________________________________________________
block5_conv1 (Conv2D)        (None, 8, 8, 512)         2359808   
_________________________________________________________________
block5_conv2 (Conv2D)        (None, 8, 8, 512)         2359808   
_________________________________________________________________
block5_conv3 (Conv2D)        (None, 8, 8, 512)         2359808   
_________________________________________________________________
block5_pool (MaxPooling2D)   (None, 4, 4, 512)         0         
=================================================================
Total params: 14,714,688
Trainable params: 0
Non-trainable params: 14,714,688
_________________________________________________________________
Model: "model_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_2 (InputLayer)         [(None, 140, 140, 3)]     0         
_________________________________________________________________
block1_conv1 (Conv2D)        (None, 140, 140, 64)      1792      
_________________________________________________________________
block1_conv2 (Conv2D)        (None, 140, 140, 64)      36928     
_________________________________________________________________
block1_pool (MaxPooling2D)   (None, 70, 70, 64)        0         
_________________________________________________________________
block2_conv1 (Conv2D)        (None, 70, 70, 128)       73856     
_________________________________________________________________
block2_conv2 (Conv2D)        (None, 70, 70, 128)       147584    
_________________________________________________________________
block2_pool (MaxPooling2D)   (None, 35, 35, 128)       0         
_________________________________________________________________
block3_conv1 (Conv2D)        (None, 35, 35, 256)       295168    
_________________________________________________________________
block3_conv2 (Conv2D)        (None, 35, 35, 256)       590080    
_________________________________________________________________
block3_conv3 (Conv2D)        (None, 35, 35, 256)       590080    
_________________________________________________________________
block3_pool (MaxPooling2D)   (None, 17, 17, 256)       0         
_________________________________________________________________
block4_conv1 (Conv2D)        (None, 17, 17, 512)       1180160   
_________________________________________________________________
block4_conv2 (Conv2D)        (None, 17, 17, 512)       2359808   
_________________________________________________________________
block4_conv3 (Conv2D)        (None, 17, 17, 512)       2359808   
_________________________________________________________________
block4_pool (MaxPooling2D)   (None, 8, 8, 512)         0         
_________________________________________________________________
block5_conv1 (Conv2D)        (None, 8, 8, 512)         2359808   
_________________________________________________________________
block5_conv2 (Conv2D)        (None, 8, 8, 512)         2359808   
_________________________________________________________________
block5_conv3 (Conv2D)        (None, 8, 8, 512)         2359808   
_________________________________________________________________
block5_pool (MaxPooling2D)   (None, 4, 4, 512)         0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 8192)              0         
_________________________________________________________________
dense_3 (Dense)              (None, 512)               4194816   
_________________________________________________________________
dense_4 (Dense)              (None, 128)               65664     
_________________________________________________________________
dense_5 (Dense)              (None, 2)                 258       
=================================================================
Total params: 18,975,426
Trainable params: 4,260,738
Non-trainable params: 14,714,688
_________________________________________________________________

Также я получаю эти две кривые:

Train_Validation Accuracy

Train_Validation Loss

По результатам тестов я получаю очень низкую точность. В чем может быть причина? Это потому, что графики повторения не подходят для vgg16? Есть ли у вас какие-нибудь альтернативные предложения? Спасибо.

...