Python 3.x 二元交叉熵或范畴交叉熵

Python 3.x 二元交叉熵或范畴交叉熵,python-3.x,keras,Python 3.x,Keras,我正在做一个10类的多标签图像分类,我有1981年的数据,标签数据只有1981年的1000 我使用这个配置 #begin model model = Sequential() model.add(Conv2D(filters=16, kernel_size=(5, 5), activation="relu", input_shape=(400,400,1))) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropou

我正在做一个10类的多标签图像分类,我有1981年的数据,标签数据只有1981年的1000

我使用这个配置

#begin model
model = Sequential()
model.add(Conv2D(filters=16, kernel_size=(5, 5), activation="relu", input_shape=(400,400,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(filters=32, kernel_size=(5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(filters=64, kernel_size=(5, 5), activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(filters=64, kernel_size=(5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(79, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='sigmoid'))

model.summary()


在编译配置中,nan损失的准确率为65%,而如果我使用二进制交叉熵,nan损失的准确率也只有10%,我对这个编译配置有点困惑,我应该使用哪种丢失配置?

对于此问题,您必须继续使用“分类交叉熵”,因为目标功能包含10个类


当目标功能中只有两个类时,必须使用“二进制交叉熵”损失函数。

感谢您的回答,我遵循本网站的多标签分类教程,[,它说为了执行多标签分类,您应该使用二进制交叉熵
sgd = optimizers.SGD(lr=0.001, momentum=0.9, decay=1e-6, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])