分类交叉熵需要使用categorical_accuracy或准确度作为keras中的指标吗?

时间:2017-04-21 13:43:22

标签: keras

我目前正在进行多类分类的研究。我使用了分类交叉熵,并且我使用准确度作为实验的指标得到了非常好的结果。当我尝试使用categorical_accuracy时,它会给出稍差的准确度(低于1%)。我的问题是,是否可以使用准确度指标来进行分类的交叉熵损失,而不是使用categorical_accuracy?

1 个答案:

答案 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%差异可能归因于逐次运行变化,因为随机梯度下降将遇到不同的最小值,除非使用相同的随机种子。