Python 3.x 如何在Keras自定义训练循环中跟踪权重和坡度

Python 3.x 如何在Keras自定义训练循环中跟踪权重和坡度,python-3.x,tensorflow,machine-learning,keras,neural-network,Python 3.x,Tensorflow,Machine Learning,Keras,Neural Network,我在Keras中定义了以下自定义模型和训练循环: class CustomModel(keras.Model): def train_step(self, data): x, y = data with tf.GradientTape() as tape: y_pred = self(x, training=True) # Forward pass loss = self.compiled_loss(y,

我在Keras中定义了以下自定义模型和训练循环:

class CustomModel(keras.Model):
    def train_step(self, data):
        x, y = data

        with tf.GradientTape() as tape:
            y_pred = self(x, training=True)  # Forward pass
            loss = self.compiled_loss(y, y_pred, regularization_losses=self.losses)

        trainable_vars = self.trainable_variables
        gradients = tape.gradient(loss, trainable_vars)
        self.optimizer.apply_gradients(zip(gradients, trainable_vars))
        self.compiled_metrics.update_state(y, y_pred)
        return {m.name: m.result() for m in self.metrics}
我使用以下代码在一个简单的玩具数据集上训练模型:

inputs = keras.layers.Input(shape=(1,))
hidden = keras.layers.Dense(1, activation='tanh')(inputs)
outputs = keras.layers.Dense(1)(hidden)

x = np.arange(0, 2*np.pi, 2*np.pi/100)
y = np.sin(x)

nnmodel = CustomModel(inputs, outputs)
nnmodel.compile(optimizer=keras.optimizers.SGD(lr=0.1), loss="mse", metrics=["mae"])
nnmodel.fit(x, y, batch_size=100, epochs=2000)
我希望能够在每个训练循环的
train\u step
函数中看到
gradient
trainable\u vars
变量的值,我不确定如何做到这一点

我曾尝试在python IDE中的
train\u step
函数中设置一个断点,并期望在调用
model.fit()
后,它在训练的每个阶段的断点处停止,但没有发生。我还试图让他们在每个历元后打印日志中的值,但我不确定如何实现这一点