[英]VGG16 Transfer Learning varying output
Observed strange behavior when using VGG16 for transfer learning. 使用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)
However, when model.predict(image)
is used, the output is varying in terms of classification,ie, sometime it classifies image as Class 1 and next time the same image is classified as Class 2. 然而,当使用model.predict(image)
,输出在分类方面是变化的,即,有时它将图像分类为类1并且下一次将相同图像分类为类2。
It is because you didn't set seed. 这是因为你没有设定种子。 Try this 试试这个
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.