如果我有一个二进制分类任务,那么神经网络的最后一层应该是:
output= tensorflow.keras.layers.Dense(1,activation='sigmoid')(x)
model.compile(loss='binary_crossentropy')
如果分类问题是多类的,标签是标量并且是k个离散值之一,我通常将标量标签编码为k维一热表示并进行修改
output= tensorflow.keras.layers.Dense(k,activation='softmax')(x)
model.compile(loss='categorical_crossentropy')
如果我有一个具有k个二进制目标的二进制分类任务,我将修改为:
output= tensorflow.keras.layers.Dense(k,activation='sigmoid')(x)
model.compile(loss='binary_crossentropy')
但是,当我有多个输出并且每个输出有多个类别时,我仍然无法弄清楚什么是正确的网络设计。 例如[[0,1],[7,2],..]