我目前正在进行多类分类的研究。我使用了分类交叉熵,并且我使用准确度作为实验的指标得到了非常好的结果。当我尝试使用categorical_accuracy时,它会给出稍差的准确度(低于1%)。我的问题是,是否可以使用准确度指标来进行分类的交叉熵损失,而不是使用categorical_accuracy?
答案 0 :(得分:10)
Keras会检测output_shape并自动确定指定accuracy
时要使用的准确度。对于多类分类,categorical_accuracy
将在内部使用。来自source:
if metric == 'accuracy' or metric == 'acc':
# custom handling of accuracy
# (because of class mode duality)
output_shape = self.internal_output_shapes[i]
acc_fn = None
if output_shape[-1] == 1 or self.loss_functions[i] == losses.binary_crossentropy:
# case: binary accuracy
acc_fn = metrics_module.binary_accuracy
elif self.loss_functions[i] == losses.sparse_categorical_crossentropy:
# case: categorical accuracy with sparse targets
acc_fn = metrics_module.sparse_categorical_accuracy
else:
acc_fn = metrics_module.categorical_accuracy
您看到的1%差异可能归因于逐次运行变化,因为随机梯度下降将遇到不同的最小值,除非使用相同的随机种子。