Чтобы поделиться параметрами модели, вам просто нужно использовать ту же модель.Это новая парадигма, представленная в 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))