我正在尝试采用一个预先训练的图像分类模型,它是一个keras模型,并为某个输出创建输入。这个想法是初始化一个随机图像,将其传递给网络并计算损失。该损失可用于优化INPUT图像,而模型的权重保持固定。我正在尝试混合使用TensorFlow和Keras。
im = np.random.normal(10,1,size=(1,40,40,4))
im = tf.convert_to_tensor(im,dtype=tf.float32)
model = load_model(path)
model.trainable = False
for layer in model.layers:
layer.trainable = False
output = model.call(im)
loss = binary_crossentropy(label,output)
training = tf.train.AdamOptimizer().minimize(loss)
sess = K.get_session()
for i in range(epochs):
sess.run(training)
但是,当我在for循环中训练时打印图层的权重时,我发现网络的权重根本没有冻结。
如何解决冻结砝码的问题。还有另一种方法来解决这个问题吗?
感谢您的关注! :)