gpt4 book ai didi

python - Tensorflow - 显示所有神经元的梯度(不仅仅是输入变量)

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

我正在使用利用梯度的 Adam 优化器来实现神经网络。这是我的代码的简要介绍

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)

这就是我输入数据的方式:

with tf.Session() as sess:
# Initialize variables
sess.run(init)

# Training cycle
for epoch in range(150):
avg_cost = 0.
total_batch = int(X_train.shape[0]/batch_size)
batch_range = list(range(batch_size, int(X_train.shape[0]),batch_size))
# Loop over all batches
i = 0
while i < total_batch - 1:
start_idx = batch_range[i]
end_idx = batch_range[i+1]
batch_x, batch_y = X_train.iloc[start_idx:end_idx,:], y_train.iloc[start_idx:end_idx,:]
# Run optimization op (backprop) and cost op (to get loss value)
_, c = sess.run([optimizer, cost], feed_dict={x: batch_x,
y: batch_y})
# Compute average loss
avg_cost += c / total_batch
i = i + 1

但是,我想显示隐藏层中所有神经元的梯度(即反向传播中使用的所有梯度)。我尝试查找相关函数,但我找到的所有函数都只计算相对于输入变量的梯度。我可以得到有关如何进行的提示吗?

最佳答案

请参阅名为 tfdbg 的 TensorFlow 内置调试​​器(在版本 0.12+ 中提供)。它在 Session.run() 调用期间公开所有中间张量(以及图形结构)。

查看演练:https://www.tensorflow.org/versions/master/how_tos/debugger/

基本工作流程如下。首先,在调用训练 Session.run() 之前包装 Session 对象。

from tensorflow.python import debug as tf_debug
sess = tf_debug.LocalCLIDebugWrapperSession(sess)

然后,当 sess.run() 发生时,您将进入 tfdbg> 命令行界面。发出 tfdbg> run 命令,然后您将看到在 sess.run() 调用期间生成的所有中间张量的列表,包括梯度。

如果您想以编程方式而不是交互方式访问渐变,tfdbg 也提供了一个 Python API。看: https://www.tensorflow.org/versions/master/api_docs/python/tf_debug/

关于python - Tensorflow - 显示所有神经元的梯度(不仅仅是输入变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41685954/

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