Softmax Cross Entropy在Tensorflow中的实现 Github源代码

问题描述 投票:0回答:1

我正在尝试用python实现一个Softmax Cross-Entropy loss。所以,我在GitHub Tensorflow仓库中看了Softmax Cross-Entropy loss的实现。我正试图理解它,但我遇到了三个函数的循环,我不明白函数中的哪一行代码在计算Loss?

函数 softmax_cross_entropy_with_logits_v2(labels, logits, axis=-1, name=None) 返回函数 softmax_cross_entropy_with_logits_v2_helper(labels=labels, logits=logits, axis=axis, name=name) ,进而返回 softmax_cross_entropy_with_logits(precise_logits, labels, name=name).

现在,该函数 softmax_cross_entropy_with_logits(precise_logits, labels, name=name) 返回函数 softmax_cross_entropy_with_logits_v2(labels, logits, axis=-1, name=None).

这让我陷入了一个函数循环,而不知道计算的代码在哪里。cost 的Softmax函数是。谁能指出Tensorflow GitHub Repository中Softmax Cross-Entropy的代码在哪里实现?

我所指的 GitHub 仓库的链接是 此处. 它包含上述三个函数的定义。

如果万一是 cost 需要很多函数,理解起来很麻烦,能不能也解释一下这几行代码?谢谢。

python tensorflow github softmax cross-entropy
1个回答
2
投票

当你跟踪这个函数的调用栈时,你最终会发现 这个:

cost, unused_backprop = gen_nn_ops.softmax_cross_entropy_with_logits(
      precise_logits, labels, name=name)

每当你看到提到一个 gen_ 模块,这意味着它是在C++代码上自动生成的python封装器--这就是为什么你不能通过简单的查找函数和跟随调用堆栈来找到。

C++源码可以找到 此处.

如何 gen_nn_ops 中有很好的描述。本回答.

© www.soinside.com 2019 - 2024. All rights reserved.