gpt4 book ai didi

Tensorflow,在 Tensorflow 的 sparse_categorical_crossentropy 中 from_logits = True 或 False 是什么意思?

转载 作者:行者123 更新时间:2023-12-02 11:17:05 26 4
gpt4 key购买 nike

在 Tensorflow 2.0 中,
有一个损失函数叫做

tf.keras.losses.sparse_categorical_crossentropy(labels, targets, from_logits = False)

我可以问你设置 from_logits = True 或 False 之间有什么区别吗?
我的猜测是,当传入值是 logits 时,您设置 from_logits = True,如果传入值是概率(由 softmax 等输出),那么您只需设置 from_logits = False(这是默认设置)。

但为什么?损失只是一些计算。为什么它的传入值需要不同?
我也在谷歌的tensorflow教程中看到
https://www.tensorflow.org/alpha/tutorials/sequences/text_generation
即使最后一层的传入值是 logits,它也不会设置 from_logits = True。
这是代码
@tf.function
def train_step(inp, target):
with tf.GradientTape() as tape:
predictions = model(inp)
loss = tf.reduce_mean(
tf.keras.losses.sparse_categorical_crossentropy(target, predictions))
grads = tape.gradient(loss, model.trainable_variables)
optimizer.apply_gradients(zip(grads, model.trainable_variables))

return loss

模型在哪里
 model = tf.keras.Sequential([
tf.keras.layers.Embedding(vocab_size, embedding_dim,
batch_input_shape=[batch_size, None]),
tf.keras.layers.LSTM(rnn_units,
return_sequences=True,
stateful=True,
recurrent_initializer='glorot_uniform'),
tf.keras.layers.Dense(vocab_size)
])

没有最后一层softmax。
(另外,在教程的另一部分,它设置了 from_logits = True)

那么,我是否将其设置为 True 无关紧要吗?

最佳答案

迪帕克提到的帖子有一些数学背景。
但为简单起见,from_logits=True 表示 crossEntropy 层的输入是正常的张量/logits,而如果 from_logits=False,则表示输入是一个概率,通常你应该在最后一层有一些 softmax 激活。

关于Tensorflow,在 Tensorflow 的 sparse_categorical_crossentropy 中 from_logits = True 或 False 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55290709/

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