报错来源于 sigmoid_cross_entropy_with_logits ,提示labels和logits shape不同。
是因为我用的二分类代码,改为多标签分类。其中生成 generator 数据时,有一个 class_mode参数。
class_mode='categorical' 为默认值,适用于多标签、多分类问题;将是2D一个热编码标签class_mode=“binary” 为二进制,适用于二分类问题,比如经典的猫和狗;将是1D二进制标签
所以:选对 class_mode 的值,即可解决此报错。
另外,适用于分类问题的输出层激活函数和对应的损失函数如下,可参考:
softmax 输出值为总和为1的概率数值,适用于 多选一 的分类问题。
sigmoid 输出值为 概率 p 和 1-p ,对应于每个种类;可根据 阈值 选 多种类标签。