在用于图像的二进制分类的CNN中,输出的形状应该是(图像数量1)还是(图像数量2)?具体来说,这是CNN中的2种最后一层:
keras.layers.Dense(2, activation = 'softmax')(previousLayer)
要么
keras.layers.Dense(1, activation = 'softmax')(previousLayer)
在第一种情况下,每个图像都有2个输出值(属于组1的概率和属于组2的概率)。在第二种情况下,每个图像只有1个输出值,即它的标签(0或1,label = 1表示它属于组1)。
哪一个是正确的?有内在的区别吗?我不想识别这些图像中的任何对象,只需将它们分为2组即可。
非常感谢!
最佳答案
第一个是正确的解决方案:
keras.layers.Dense(2, activation = 'softmax')(previousLayer)
通常,我们使用
softmax
激活函数执行分类任务,并且输出宽度将为类别的数量。这意味着,如果要使用标签A
,B
或C
将一个对象分为三类,则需要使Dense
层生成形状为(None, 3)
的输出。然后,您可以使用cross_entropy
损耗函数来计算LOSS
,自动计算梯度并执行反向传播过程。如果只想在
Dense
层上生成一个值,则意味着您会得到形状为(None, 1)
的张量-因此它会生成单个数值,如regression
任务。您正在使用输出的值来表示类别。答案是正确的,但其表现不如classification
任务的一般解决方案。关于tensorflow - Dense(2)和Dense(1)之间的区别是二进制分类CNN的最后一层?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50808593/