我如何在 Keras 中使用 categorical_hinge?

How do I use categorical_hinge in Keras?

也许是一个非常愚蠢的问题,但我找不到如何在 Keras 中使用 categorical_hinge 的示例。我进行分类,我的目标是 shape(,1),值为 [-1,0,1],所以我有 3 个类别。使用功能 API 我已经像这样设置了我的输出层:

output = Dense(1, name='output', activation='tanh', kernel_initializer='lecun_normal')(output1)

那我申请:

model.compile(optimizer=adam, loss={'output': 'categorical_hinge'}, metrics=['accuracy'])

结果是模型正在收敛,但准确度趋于 0。我做错了什么?

使用:

model.compile(optimizer=adam, loss="categorical_hinge", metrics=['accuracy'])

虽然 [-1, 0, 1] 是 tanh 激活函数的有效目标范围,但经验告诉我们 Keras 模型不能很好地处理二进制输出中的分类。考虑改用三个 one-hot 向量和 softmax 分类器。如果我正确地解释 this bug report,分类铰链无论如何都可以与单热向量一起使用。

因此:将您的标签转换为单选,并将您的输出更改为以下内容:

output = Dense(3, name='output', activation='softmax', kernel_initializer='lecun_normal')(output1)