【问题标题】:Softmax Cross Entropy implementation in Tensorflow Github Source CodeTensorflow Github 源代码中的 Softmax 交叉熵实现
【发布时间】:2020-08-16 21:42:10
【问题描述】:

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

函数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)

这让我陷入了函数循环,却没有明确知道计算 Softmax 函数的 cost 的代码在哪里。谁能指出 Softmax 交叉熵的代码在 Tensorflow GitHub 存储库中的实现位置?

我引用的 GitHub 存储库的链接是 here。它包含了上述三个函数的定义。

如果cost 的代码需要很多难以理解的函数,你能解释一下代码行吗?谢谢。

【问题讨论】:

    标签: python tensorflow bazel softmax cross-entropy


    【解决方案1】:

    当你跟踪这个函数的调用堆栈时,你最终会找到this

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

    每当您看到对 gen_ 模块的引用时,这意味着它是 C++ 代码上自动生成的 python 包装器 - 这就是为什么您无法通过简单地查找函数并跟踪调用堆栈来找到它。

    C++源代码可以在here找到。

    gen_nn_ops 的创建方式在this answer 中有很好的描述。

    【讨论】:

    • 感谢 Lukasz 的回答。我想知道是否可以与您联系以获得有关我正在从头开始构建的深度学习模型的帮助,而无需使用任何框架。
    • @AmarParajuli 当然。联系方式在我的个人资料和 GitHub 上,你可以很容易地找到我。
    猜你喜欢
    • 1970-01-01
    • 2017-12-22
    • 2017-12-26
    • 2017-11-11
    • 2017-11-13
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多