代码拉取完成,页面将自动刷新
tf.nn.softmax_cross_entropy_with_logits(labels, logits, axis=-1, name=None) -> Tensor
更多内容详见tf.nn.softmax_cross_entropy_with_logits。
class mindspore.nn.SoftmaxCrossEntropyWithLogits(sparse=False, reduction='none')(logits, labels) -> Tensor
更多内容详见mindspore.nn.SoftmaxCrossEntropyWithLogits。
TensorFlow:TensorFlow中该算子是函数式,可以直接调用算子接受logits
和labels
输入,并返回输出结果。参数labels
和logits
的shape需一致,可指定axis
参数指定‘类’所在的维度。
MindSpore:MindSpore中该算子需要实例化,实例化时可接受sparse
参数表示输入的labels
是否是稀疏表示,默认为False
;可接受reduction
参数表示输入结果的规约方式,取值为mean
、sum
或none
,默认为none
。
分类 | 子类 | TensorFlow | MindSpore | 差异 |
---|---|---|---|---|
参数 | 参数1 | labels | labels | MindSpore在实例化函数中接收此参数,功能一致 |
参数2 | logits | logits | MindSpore在实例化函数中接收此参数,功能一致 | |
参数3 | axis | - | TensorFlowaxis 参数指定‘类’所在的维度,如axis=-1 表示最后一个维度作为‘类’的维度,MindSpore无此参数 |
|
参数4 | name | - | 不涉及 | |
参数5 | - | sparse | MindSpore实例化时可以接受sparse 指定输入的labels 是否为稀疏表示,TensorFlow无此参数 |
|
参数6 | - | reduction | MindSpore可对输出结果进行规约,TensorFlow无此参数 |
两API实现功能一致,但是TensorFlow该算子是函数式的,直接接受输入。MindSpore中需要先实例化。
# TensorFlow
import tensorflow as tf
from tensorflow import nn
logits = tf.constant([[4.0, 2.0, 1.0], [0.0, 5.0, 1.0]])
labels = tf.constant([[1.0, 0.0, 0.0], [0.0, 0.8, 0.2]])
out = nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)
print(out.numpy())
# [0.16984604 0.82474494]
# MindSpore
import numpy as np
import mindspore
from mindspore import Tensor, nn
logits = Tensor(np.array([[4.0, 2.0, 1.0], [0.0, 5.0, 1.0]]), mindspore.float32)
labels = Tensor(np.array([[1.0, 0.0, 0.0], [0.0, 0.8, 0.2]]), mindspore.float32)
loss = nn.SoftmaxCrossEntropyWithLogits()
out = loss(logits, labels)
print(out)
# [0.16984606 0.82474494]
TensorFlow中可接受
axis
参数指定'类'所在维度。MindSpore默认最后一维,因为接受的logits
的shape
为[batch_size, num_classes]
,MindSpore可以通过调用Transpose算子交换axis
实现相同的功能。
# TensorFlow
import tensorflow as tf
from tensorflow import nn
logits = tf.constant([[4.0, 0.0],[2.0, 5.0],[1.0, 1.0]])
labels = tf.constant([[1.0, 0.0],[0.0, 0.8],[0.0, 0.2]])
out = nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits, axis=0)
print(out.numpy())
# [0.16984604 0.82474494]
# MindSpore
import numpy as np
import mindspore
from mindspore import Tensor, nn, ops
logits_ = Tensor(np.array([[4.0, 0.0],[2.0, 5.0],[1.0, 1.0]]), mindspore.float32)
labels_ = Tensor(np.array([[1.0, 0.0],[0.0, 0.8],[0.0, 0.2]]), mindspore.float32)
transpose = ops.Transpose()
logits = transpose(logits_, (1,0))
labels = transpose(labels_, (1,0))
loss = nn.SoftmaxCrossEntropyWithLogits()
out = loss(logits, labels)
print(out)
# [0.16984606 0.82474494]
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。