我使用具有tensorflow后端的Keras。
Will Keras仍然会计算我设置的图层的梯度trainable = False
?Keras是否计算冻结层的梯度?
当我修复大部分图层时,我没有观察到深度网络(如Resnet-50)的加速。看起来梯度仍然是为固定层计算的,但它们的值是乘以0.任何人都可以肯定地告诉我这是真的吗?
这是一个小网络的例子,我修复了第一层。
import numpy as np
import keras
import keras.applications.resnet50
x = keras.layers.Input(shape=(5,))
y = keras.layers.Dense(5)(x)
z = keras.layers.Dense(5)(y)
model = keras.models.Model(x, z)
for layer in model.layers[:2]:
layer.trainable = False
model.compile(optimizer='rmsprop', loss='mse')
print model.summary()
X = np.random.rand(100, 5)
model.fit(X, X, epochs=100)