c++ - Caffe SoftmaxWithLoss 错误

标签 c++ neural-network caffe

当我尝试求解我的神经网络时收到此错误消息:

    Check failed: label_value < prob_.shape(softmax_axis_) (1 vs. 1)

我的标签都是 0 或 1。当我尝试这个 example 时它适用于 0 和 1 标签。所以我的假设是错误在第二部分:

    prob_.shape(softmax_axis_)

我在源代码中查找它,但我不明白我的源代码或 prototxt 文件如何影响这个值。

有人可以解释发生了什么以及我如何让我的 softmax 层接受值为 1 的标签吗?

最佳答案

当使用 "SoftmaxWithLoss" 层预测二进制标签时,您的“类概率” vector 的长度应为 2(而不是 1)。
你得到一个错误说你的“类别概率” vector (又名“prob_”)是维度 1 而它应该至少是 2(即严格大于最大的标签)。

检查生成类概率的层中的num_output 参数。

或者,对于二进制分类,考虑使用 "SigmoidCrossEntropyLoss"

关于c++ - Caffe SoftmaxWithLoss 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46443603/

相关文章:

python - 使用 Keras 构建的回归神经网络只能预测一个值

java - 测试多层感知器

artificial-intelligence - 信息挖掘、分类、修改

c++ - 无法在 WMI 中检索对象属性 (c++)

c++ - 为什么在 C++ 中插入 vector 有效?

c++ - volatile 是在 C/C++ 中生成单字节原子的正确方法吗?

c++ - 从caffe中提取特征

c++ - 什么时候使用静态库需要头文件?

machine-learning - Caffe 如何在原型(prototype)中对同一数据集进行缩放和设置平均值

machine-learning - 使用预训练网络(1 个分支)来初始化 caffe 中具有 2 个分支的网络中各层的权重