gpt4 book ai didi

python - 如果我的任何模型变量为 NaN,如何在 TensorFlow 中检查?

转载 作者:太空宇宙 更新时间:2023-11-03 14:17:28 25 4
gpt4 key购买 nike

我的模型是:

weights = {
'h1': tf.Variable(tf.random_normal([num_input, num_hidden_1]),name="h1"),
'h2': tf.Variable(tf.random_normal([num_hidden_1, num_hidden_2]),name="h2"),
'h3': tf.Variable(tf.random_normal([num_hidden_2, num_hidden_3]),name="h3"),
'wout': tf.Variable(tf.random_normal([num_hidden_3, num_output]),name="wout")
}

biases = {
'b1': tf.Variable(tf.random_normal([num_hidden_1]),name="b1"),
'b2': tf.Variable(tf.random_normal([num_hidden_2]),name="b2"),
'b3': tf.Variable(tf.random_normal([num_hidden_3]),name="b3"),
'bout': tf.Variable(tf.random_normal([num_output]),name="bout")
}

我知道如何使用 tf.is_nan 检查单个元素是否为 NaN:

def save_weights():
if sess.run(tf.is_nan(sess.run(weights["h1"]).tolist()[0][0])):
utils.printflush("weights have nan, refused to save")

当然,我可以循环遍历 Python 中的所有元素,但是对于一百万个权重和偏差,这非常耗时。是否有 TensorFlow 操作可以执行此操作(迭代我的所有模型变量)?

最佳答案

您可以使用tf.reduce_any检查张量的至少一个元素是否不为零。

另一方面,您可能想查看tf.verify_tensor_all_finite ,如果在张量上发现 NaN 或无限值,这将中断执行(请阅读 tf.Assert 的文档以了解如何在图上使用断言)。

无论如何,请记住所有这些函数(包括 tf.is_nan)都会在图中创建新操作。最好首先创建所有操作,然后根据需要调用 run,以确保您的图形不会在每次运行时不必要地增长。

关于python - 如果我的任何模型变量为 NaN,如何在 TensorFlow 中检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48155121/

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