gpt4 book ai didi

python - 具有虚拟输入的简单模型中具有 Softmax 交叉熵的 NaN

转载 作者:行者123 更新时间:2023-12-01 09:18:52 25 4
gpt4 key购买 nike

我正在简化我的模型,以便查看 NaN 错误发生的位置,并将其缩小到我的损失函数:

import tensorflow as tf
from tensorflow.python import debug as tf_debug

def train_input_fn():
pass


def model_fn(features, labels, mode, params):

classes = 225
enc = tf.ones((1,20,1024), dtype=tf.float16)
labels = tf.ones((1,20), dtype=tf.int32)

logits = tf.layers.dense(enc, classes)
loss = tf.reduce_sum(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels)) / 20
train_op = tf.train.AdamOptimizer(learning_rate=0.00001, beta1=0.9, beta2=0.999).minimize(loss)

return tf.estimator.EstimatorSpec(mode, loss=loss, train_op=train_op)


if __name__ == '__main__':

model_directory = path/to/logdir
hooks = [tf_debug.LocalCLIDebugHook(ui_type="readline")]

classifier = tf.estimator.Estimator(
model_fn=model_fn,
model_dir=model_directory,
params={},
)

classifier.train(input_fn=lambda: train_input_fn(), hooks = hooks)

在新的模型目录上使用 tensorflow 调试器进行第三次或第四次“运行”后,我得到“训练期间的 NaN 损失”。我已经尝试将学习率设置得很低,但没有任何改变。我使用的是tensorflow-gpu 1.8。

最佳答案

我已经尝试过您给定的代码。我从第一步就得到了 NaN 。

我已经检查了 official documentation .

logits: Unscaled log probabilities of shape [d_0, d_1, ..., d_{r-1}, num_classes] and dtype float32 or float64.

enc = tf.ones((1,20,1024), dtype=tf.float16) 更改为 enc = tf.ones((1,20,1024), dtype =tf.float32) 成功了!

关于python - 具有虚拟输入的简单模型中具有 Softmax 交叉熵的 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50975389/

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