Tensorflow 2.0 Как сделать параметры совместного использования среди сверточных слоев? - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь повторно реализовать Multi-View CNN (MVCNN) в Tensorflow 2.0.Однако, как я вижу, у слоев keras нет параметров reuse = True | False, как в tf.layers.Есть ли способ, которым я могу определить свои слои, которые совместно используют параметры, используя новый API?Или мне нужно построить свою модель в стиле TFv1?

Большое спасибо!

1 Ответ

2 голосов
/ 04 июля 2019

Чтобы поделиться параметрами модели, вам просто нужно использовать ту же модель.Это новая парадигма, представленная в TensorFlow 2.0;В TF 1.xt мы использовали графо-ориентированный подход, в котором нам нужно повторно использовать один и тот же граф для совместного использования переменных, но теперь мы можем просто повторно использовать один и тот же объект tf.keras.Model с разными входами.

Является ли объект, который несет свои собственные переменные.

Используя модель 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))

...