Tensorflow 2.0如何在卷积层之间共享参数?

时间:2019-07-04 13:28:25

标签: tensorflow keras keras-layer tensorflow2.0 multiview

我正在尝试在Tensorflow 2.0中重新实现Multi-View CNN (MVCNN)。但是,从我的角度来看,keras图层没有tf.layers那样的选项reuse = True | False。有什么方法可以定义使用新API共享参数的图层?还是我需要以TFv1的方式构建模型?

非常感谢您!

1 个答案:

答案 0 :(得分:2)

要共享模型的参数,只需使用相同的模型。这是TensorFlow 2.0中引入的新范例; 在TF 1.xt中,我们使用了一种面向图的方法,在该方法中,我们需要重复使用同一图来共享变量,但是现在我们可以使用不同的输入来重复使用同一tf.keras.Model对象。 / p>

是带有自己变量的对象。

使用Keras模型和tf.GradientTape,您可以训练一个共享变量的模型,如下例所示。


# This is your model definition
model = tf.keras.Sequential(...)

#input_1,2 are model different inputs

with tf.GradientTape() as tape:
  a = model(input_1)
  b = model(input_2)
  # you can just copute the loss
  loss = a + b

# Use the tape to compute the gradients of the loss
# w.r.t. the model trainable variables

grads = tape.gradient(loss, model.trainable_varibles)

# Opt in an optimizer object, like tf.optimizers.Adam
# and you can use it to apply the update rule, following the gradient direction

opt.apply_gradients(zip(grads, model.trainable_variables))