vgg16 передача обучения слишком низкая точность проверки (и обучения) и увеличение допустимой потери - PullRequest
0 голосов
/ 20 июня 2020

Я собираюсь классифицировать изображения (10 классов), используя трансферное обучение с vgg16, предварительно обученным на cifar10.

x_train имеет 2000 изображений (100 знаменитостей по 20 изображений каждое), а x_test имеет 1000 изображений (100 знаменитостей с 10 изображений каждое).

Я несколько раз пробовал с разными настройками, я получаю такие результаты, которые имеют увеличивающиеся допустимые потери и слишком низкую допустимую точность (также низкую точность поезда).

Я не могу разобраться в проблеме ... Если вам нужна дополнительная информация о коде, дайте мне знать :)

val_loss graph1

результат val_loss graph2

    print(len(x_train))=2000
    print(len(y_train))=2000
    print(len(x_test))=1000
    print(len(y_test))=1000
    
    print(x_train.shape)=(2000, 32, 32, 3)
    print(y_train.shape)=(2000, 100)
    print(x_test.shape)=(2000, 32, 32, 3)
    print(y_test.shape)=(2000, 100)

    # all type is numpy.ndarray
    
    # loading pretrained VGG16-cifar10
    prevgg = VGG16(weights='/content/drive/My Drive/vgg16cifar10.h5',
                   include_top=True,
                   input_shape=(32, 32, 3),
                   classes=10)
    
    prevgg.layers.pop()
    
    newvgg = Sequential()
    
    for layer in prevgg.layers:
      layer.trainable = False
      newvgg.add(layer)
    
    newvgg.add(layers.Dense(100, activation='softmax'))
    
    newvgg.compile(loss='categorical_crossentropy',
                   optimizer=optimizers.Adam(lr=0.01),
                   metrics=['acc'])
    
    es = EarlyStopping(monitor='val_loss', patience=500)
    X_train, x_val, Y_train, y_val = train_test_split(x_train, y_train, test_size=0.1, random_state=1)

    history = newvgg.fit(X_train,
                         Y_train,
                         batch_size=128,
                         epochs=100,
                         callbacks=[es],
                         validation_data=(x_val, y_val))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...