NN 和 CNN 的输出(最后一层)有区别吗?
Is there a difference in the output (final layer) between NN and CNN?
在多类分类的情况下,如果类个是N
个,那么一个NN有N
个输出节点。然而,对于使用 NN 的二元分类,输出节点只有一个。
困惑:对于使用具有整数值标签(0/1 或 1/2)的 CNN 的二元分类,输出节点的数量是否为 2?或者使用 one-hot 编码方案 0-0、0-1、1-0 和 1-1,输出节点的数量将为 2,否则为 1 个输出节点。
这种混淆也来自实现语法。在下面使用 CNN 的代码中,对于二进制分类,当 类 是整数值 0/1 或 1/2 时,我必须提到 numClasses =2
。这是否意味着有 2 个输出节点?不对的地方请指正
inputSize = [28 28 1];
numClasses = 2;
layers = [
imageInputLayer(inputSize)
convolution2dLayer(5,20)
batchNormalizationLayer
reluLayer
fullyConnectedLayer(numClasses)
softmaxLayer
classificationLayer];
实现语法正确。但是对于二进制 classification 只使用 sigmoid 激活而不是 softmax,最后一层只有一个节点。
使用sigmoid时,输出节点数为1,不使用one hot encoding。
sigmoid 的输出是概率,如果概率大于 0.5,则输出 class 是 class 1
否则 class 2.
使用softmax时,输出节点数为2,需要一次热编码。
两个输出节点代表每个 class 的概率。
在多类分类的情况下,如果类个是N
个,那么一个NN有N
个输出节点。然而,对于使用 NN 的二元分类,输出节点只有一个。
困惑:对于使用具有整数值标签(0/1 或 1/2)的 CNN 的二元分类,输出节点的数量是否为 2?或者使用 one-hot 编码方案 0-0、0-1、1-0 和 1-1,输出节点的数量将为 2,否则为 1 个输出节点。
这种混淆也来自实现语法。在下面使用 CNN 的代码中,对于二进制分类,当 类 是整数值 0/1 或 1/2 时,我必须提到 numClasses =2
。这是否意味着有 2 个输出节点?不对的地方请指正
inputSize = [28 28 1];
numClasses = 2;
layers = [
imageInputLayer(inputSize)
convolution2dLayer(5,20)
batchNormalizationLayer
reluLayer
fullyConnectedLayer(numClasses)
softmaxLayer
classificationLayer];
实现语法正确。但是对于二进制 classification 只使用 sigmoid 激活而不是 softmax,最后一层只有一个节点。
使用sigmoid时,输出节点数为1,不使用one hot encoding。 sigmoid 的输出是概率,如果概率大于 0.5,则输出 class 是 class 1 否则 class 2.
使用softmax时,输出节点数为2,需要一次热编码。 两个输出节点代表每个 class 的概率。