gpt4 book ai didi

python - 如何在tensorflow中打印梯度的总和值?

转载 作者:行者123 更新时间:2023-11-30 09:19:04 26 4
gpt4 key购买 nike

self.logits =  nn_layers.full_connect_(self.wide_deep_embed, config.num_classes, activation='None', use_bn = True, \
keep_prob=self.keep_prob, name='output_layer') # predict prob
## loss and optim
#self.loss = nn_layers.cross_entropy_loss_with_reg(self.labels, self.logits)
self.loss = tf.losses.mean_squared_error(self.labels, self.logits)
tf.summary.scalar('loss', self.loss)

if not opt:
optim = nn_layers.get_optimizer(config.optimizer, learning_rate=self.learning_rate)
else:
optim = opt
self.train_op = optim.minimize(self.loss, global_step=self.global_step)

## score & infers
self.infers = self.logits # predict label

这是我的模型的一部分,它是一个用于执行回归任务的 DNN。但我发现模型的损失在几个batch之后没有太大变化(batch size是1000,整个数据是1100万)。所以我想打印每一步的梯度总和的值,即每批梯度的总和。我该如何修改我的代码来做到这一点?

最佳答案

以下是如何将渐变添加到 tensorboard summary每一步:

# All gradients of loss function wrt trainable variables 
grads = tf.gradients(self.loss, tf.trainable_variables())
# Summarize all gradients
for grad, var in list(zip(grads, tf.trainable_variables())):
tf.summary.histogram(var.name + '/gradient', grad)

如果梯度太大,您也可以报告总和:

for grad, var in list(zip(grads, tf.trainable_variables())):
tf.summary.histogram(var.name + '/gradient_sum', tf.reduce_sum(grad))

但通常您无需求和即可检测梯度消失:只需查看网络早期层的梯度即可。

关于python - 如何在tensorflow中打印梯度的总和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46842321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com