VGG16 Transfer Learning различного выхода - PullRequest
0 голосов
/ 29 июня 2018

Наблюдается странное поведение при использовании VGG16 для заочного обучения.

model = VGG16(weights='imagenet',include_top=True)
model.layers.pop()
model.layers.pop()

for layer in model.layers:
    layer.trainable=False

new_layer = Dense(2,activation='softmax')
inp = model.input
out = new_layer(model.layers[-1].output)

model = Model(inp,out)

Однако, когда используется model.predict(image), выходные данные различаются с точки зрения классификации, то есть иногда они классифицируют изображение как класс 1, а в следующий раз то же изображение классифицируется как класс 2.

1 Ответ

0 голосов
/ 29 июня 2018

Это потому что вы не посадили семя. Попробуйте это

import numpy as np
seed_value = 0
np.random.seed(seed_value)

model = VGG16(weights='imagenet',include_top=True)
model.layers.pop()
model.layers.pop()

for layer in model.layers:
    layer.trainable=False

new_layer = Dense(2, activation='softmax',
                  kernel_initializer=keras.initializers.glorot_normal(seed=seed_value),
                  bias_initializer=keras.initializers.Zeros())
inp = model.input
out = new_layer(model.layers[-1].output)

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