我在这里浏览tensorflow API文档.在tensorflow文档中,他们使用了一个名为的关键字logits.它是什么?在API文档的很多方法中,它都是这样编写的
tf.nn.softmax(logits, name=None)
Run Code Online (Sandbox Code Playgroud)
如果写的是什么是那些logits只Tensors,为什么保持一个不同的名称,如logits?
另一件事是我有两种方法无法区分.他们是
tf.nn.softmax(logits, name=None)
tf.nn.softmax_cross_entropy_with_logits(logits, labels, name=None)
Run Code Online (Sandbox Code Playgroud)
它们之间有什么区别?这些文档对我来说并不清楚.我知道是什么tf.nn.softmax呢.但不是另一个.一个例子将非常有用.
在下面的代码中,我将 的Predicted Output与(使用 实现的)TF Keras Model各自的值进行比较。calculated ManuallySoftmax ActivationNumpy
令人惊讶的是,它们并不相同。我错过了什么吗?
另外,还有一个警告,
UserWarning:“
sparse_categorical_crossentropy已收到from_logits=True,但output参数是由 sigmoid 或 softmax 激活产生的,因此不代表 logits。这是有意的吗?” '“sparse_categorical_crossentropy已收到from_logits=True,但是'
这个警告是什么意思?该警告是不匹配的原因吗?
import tensorflow as tf
import numpy as np
inputs = tf.keras.Input(shape=(784,), name="digits")
x1 = tf.keras.layers.Dense(64, activation="relu")(inputs)
x2 = tf.keras.layers.Dense(64, activation="relu")(x1)
outputs = tf.keras.layers.Dense(10, name="predictions", activation = 'softmax')(x2)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
# Instantiate an optimizer.
optimizer = tf.keras.optimizers.SGD(learning_rate=1e-3)
# Instantiate a loss function.
loss_fn = …Run Code Online (Sandbox Code Playgroud)