【问题标题】:How to print gradient values for a particular layer of my tensorflow model?如何为我的张量流模型的特定层打印梯度值?
【发布时间】:2021-07-05 15:59:46
【问题描述】:

我正在 TensorFlow 2.3 中训练模型

我想查看模型不同层的渐变值。

我知道如何访问我的模型的层。

with tf.GradientTape() as tape:
    lstm = model(song_emb_inp=song_emb_id_x_batch,
                 time_bucket_emb_inp=time_bucket_emb_id_x_batch,
                 training=True)
    
    loss = compute_loss(model, song_emb_id_y_batch, lstm)   
    
grads = tape.gradient(loss, model.trainable_variables)

for var, g in zip(model.trainable_variables, grads):
    print(f'{var.name}, shape: {g.shape}')     

它给出以下输出-

如何打印所有这些可训练层的梯度值?

【问题讨论】:

    标签: tensorflow2.0 tensorflow-datasets gradient-descent gradienttape


    【解决方案1】:

    您已经有了渐变(代码中的 g) 如果要打印渐变,可以使用print(g) 而不是print(g.shape)

    以下示例(使用您的代码)

    model = ...
    with tf.GradientTape() as tape:
        output = model(x)
        loss = compute_loss(output, y)   
    
    grads = tape.gradient(loss, model.trainable_variables)
    
    for var, g in zip(model.trainable_variables, grads):
        # in this loop g is the gradient of each layer
        print(f'{var.name}, shape: {g.shape}')
        print("gradients..")
        print(g)
    

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 1970-01-01
      • 2019-07-01
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      • 1970-01-01
      相关资源
      最近更新 更多