小编pag*_*age的帖子

不应该是model.trainable =模型下的假冻结权重?

我试图冻结免费训练的VGG16的图层(下面的'conv_base'),并在它们上面添加新图层以进行特征提取.我希望在(ret1)/之后(ret2)拟合模型之前从'conv_base'获得相同的预测结果,但事实并非如此.这是检查体重冻结的错误方法吗?

加载VGG16并设置为无法处理

conv_base  = applications.VGG16(weights='imagenet', include_top=False, input_shape=[150, 150, 3]) 
conv_base.trainable = False
Run Code Online (Sandbox Code Playgroud)

模型拟合前的结果

ret1 = conv_base.predict(np.ones([1, 150, 150, 3]))
Run Code Online (Sandbox Code Playgroud)

在VGG16顶部添加图层并编译模型

model = models.Sequential()
model .add(conv_base)
model .add(layers.Flatten())
model .add(layers.Dense(10, activation='relu'))
model .add(layers.Dense(1, activation='sigmoid'))
m.compile('rmsprop', 'binary_crossentropy', ['accuracy'])
Run Code Online (Sandbox Code Playgroud)

适合模型

m.fit_generator(train_generator, 100, validation_data=validation_generator, validation_steps=50)
Run Code Online (Sandbox Code Playgroud)

模型拟合后的结果

ret2 = conv_base.predict(np.ones([1, 150, 150, 3]))
Run Code Online (Sandbox Code Playgroud)

希望这是真的,但事实并非如此.

np.equal(ret1, ret2)
Run Code Online (Sandbox Code Playgroud)

keras keras-2

7
推荐指数
2
解决办法
4336
查看次数

标签 统计

keras ×1

keras-2 ×1