Python Tensorflow 2通过优化路径进行区分?

Python Tensorflow 2通过优化路径进行区分?,python,tensorflow,keras,deep-learning,backpropagation,Python,Tensorflow,Keras,Deep Learning,Backpropagation,我正试图用Keras后端计算Tensorflow 2中一篇论文(MAML,由C.Finn等人撰写)的“梯度到梯度”。因此,我们从一些初始权重开始,计算K个梯度更新步骤,并希望通过初始权重进行反向传播。下面的代码示例说明了我想要实现的目标,但不幸的是,它不起作用 optimizer = tf.keras.SGD() initial_weights = model.trainable_variables with tf.GradientTape() as mt: for gradient_

我正试图用Keras后端计算Tensorflow 2中一篇论文(MAML,由C.Finn等人撰写)的“梯度到梯度”。因此,我们从一些初始权重开始,计算K个梯度更新步骤,并希望通过初始权重进行反向传播。下面的代码示例说明了我想要实现的目标,但不幸的是,它不起作用

optimizer = tf.keras.SGD()
initial_weights = model.trainable_variables

with tf.GradientTape() as mt:
    for gradient_steps in range(10):
        with tf.GradientTape() as t:
            loss = loss_function(y_train, model(x_train))
        grads = t.gradient(loss, model.trainable_variables)
        optimizer.apply_gradients(zip(grads, model.trainable_variables))
    test_loss = loss_function(y_test, model(x_test))
mt.gradient(test_loss, initial_weights)

有人知道如何通过初始化进行区分吗?任何帮助都将不胜感激

我不确定您是否希望在K个初始过程中实际更新变量,或者您只希望在这些K个过程中使用“临时更新”,并且仅使用“渐变到渐变”实际更新变量。在任何情况下,我都不确定有没有一种方法可以用普通的Keras代码实现这一点。如果您有一个可调用的
model
来接收
x_train
和当前参数值,则会更简单。正常的Keras模型将始终使用其
可训练的_变量
,梯度不会在这些变量中反向传播。如果您想在不破坏梯度链的情况下为TensorFlow变量分配新值,您可以使用-但这仍然不允许您使用“正常”来执行此操作我想是凯拉斯型号。@jdehesa谢谢您的回复!我只想使用“临时更新”通过渐变计算渐变,并使用这些来更新实际的参数集。感谢您建议使用tf.grad\u pass\u!我不知道这个存在。我会尝试一下,希望它能奏效。一旦我发现:)@jdehesa,我将更新此线程。不幸的是,它似乎不起作用:s。它不捕获依赖项