Реализация AlexNet в Keras и веса моделей для тонкой настройки - PullRequest
0 голосов
/ 12 февраля 2019

Я работаю с Keras и Tensorflow в качестве бэкэнда и хочу точно настроить вес модели AlexNet на свой собственный набор данных.Я не могу найти модель весов с оригинальной реализацией модели онлайн.Если вес модели не соответствует слоям в реализации или наоборот.

Может кто-нибудь дать мне файл весов и реализацию архитектуры для Keras?

Вот ссылка на модельЯ использую: https://github.com/duggalrahul/AlexNet-Experiments-Keras

и вот код архитектуры.

Пример получаемой ошибки:

ValueError: Вы пытаетесь загрузитьфайл весов, содержащий 11 слоев, в модель с 10 слоями.

или

ValueError: Вы пытаетесь загрузить файл весов, содержащий 11 слоев, в модель с 16слои.

def alexnet_model(img_shape=(224, 224, 3), n_classes=60, l2_reg=0.,
weights=None):

    # Initialize model
    alexnet = Sequential()

    # Layer 1
    alexnet.add(Conv2D(96, (11, 11), input_shape=img_shape,
        padding='same', kernel_regularizer=l2(l2_reg)))
    alexnet.add(BatchNormalization())
    alexnet.add(Activation('relu'))
    alexnet.add(MaxPooling2D(pool_size=(2, 2)))

    # Layer 2
    alexnet.add(Conv2D(256, (5, 5), padding='same'))
    alexnet.add(BatchNormalization())
    alexnet.add(Activation('relu'))
    alexnet.add(MaxPooling2D(pool_size=(2, 2)))

    # Layer 3
    alexnet.add(ZeroPadding2D((1, 1)))
    alexnet.add(Conv2D(512, (3, 3), padding='same'))
    alexnet.add(BatchNormalization())
    alexnet.add(Activation('relu'))
    alexnet.add(MaxPooling2D(pool_size=(2, 2)))

    # Layer 4
    alexnet.add(ZeroPadding2D((1, 1)))
    alexnet.add(Conv2D(1024, (3, 3), padding='same'))
    alexnet.add(BatchNormalization())
    alexnet.add(Activation('relu'))

    # Layer 5
    alexnet.add(ZeroPadding2D((1, 1)))
    alexnet.add(Conv2D(1024, (3, 3), padding='same'))
    alexnet.add(BatchNormalization())
    alexnet.add(Activation('relu'))
    alexnet.add(MaxPooling2D(pool_size=(2, 2)))

    # Layer 6
    alexnet.add(Flatten())
    alexnet.add(Dense(3072))
    alexnet.add(BatchNormalization())
    alexnet.add(Activation('relu'))
    alexnet.add(Dropout(0.5))

    # Layer 7
    alexnet.add(Dense(4096))
    alexnet.add(BatchNormalization())
    alexnet.add(Activation('relu'))
    alexnet.add(Dropout(0.5))

    # Layer 8
    alexnet.add(Dense(n_classes))
    alexnet.add(BatchNormalization())
    alexnet.add(Activation('softmax'))

    if weights is not None:
        alexnet.load_weights(weights)

    return alexnet
...