Tensorflow 中的 Softmax 交叉熵实现 Github 源代码

Softmax Cross Entropy implementation in Tensorflow Github Source Code

我正在尝试在 python 中实现 Softmax 交叉熵损失。因此,我在 GitHub Tensorflow 存储库中查看了 Softmax 交叉熵损失的实现。我试图理解它,但我 运行 进入了三个函数的循环,我不明白函数中的哪一行代码正在计算损失?

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

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

这让我陷入了一个函数循环,而不知道用于计算 Softmax 函数的 cost 的代码在哪里。谁能指出在 Tensorflow GitHub 存储库中实现 Softmax 交叉熵的代码的位置?

我引用的 GitHub 存储库的 link 是 here。包含了以上三个函数的定义。

万一cost的代码需要很多函数,理解起来很麻烦,你能不能也解释一下代码行?谢谢。

当您跟踪此函数的调用堆栈时,您最终会找到 this:

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

每当您看到对 gen_ 模块的引用时,就意味着它是一个自动生成的 python 对 C++ 代码的包装器 - 这就是为什么您无法通过简单地查找函数和后续调用找到的原因堆叠。

可以找到 C++ 源代码 here

如何创建 gen_nn_opsthis answer 中有很好的描述。