请考虑以下代码行。
model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy'])
我被允许对我的图像标注模型使用 metrics=['accuracy']
。我的模型定义如下:
inputs1 = Input(shape=(2048,))fe1 = Dropout(0.2)(inputs1)fe1=BatchNormalization()(fe1)fe2 = Dense(256, activation='relu')(fe1)inputs2 = Input(shape=(max_length,))se1 = Embedding(vocabsize, embedding_dim, mask_zero=True)(inputs2)se2 = Dropout(0.2)(se1)se2=BatchNormalization()(se2)se3 = LSTM(256)(se2)decoder1 = add([fe2, se3])decoder2 = Dense(256, activation='relu')(decoder1)outputs = Dense(vocabsize, activation='softmax')(decoder2)model = Model(inputs=[inputs1, inputs2], outputs=outputs)
训练这个模型后,输出如下:
-
我可以使用这个准确性指标来评估我的图像标注模型吗?
-
如果可以,那么内置的计算是否考虑了预测标注的语义含义?
-
如果对第一个问题的回答是肯定的,那么BLEU分数和其他评估指标的用途是什么?
-
我的模型对给定的新图像产生了不错的标注。准确性指标值是否必须大于0.5?
回答:
为了回答所有问题,我应该说:
对于语言模型,通常使用BLEU(双语评估研究)分数,因为它能更好地概览模型性能。
Keras的准确性指标可以使用,但它实际上是为分类模型或具有确定性输出的模型设计的,而语言模型并非如此,例如(“我很好”和“我不错”或“我很好”具有相同含义,但Keras的准确性会将它们区分开来)。我建议查看Keras的实现:https://github.com/keras-team/keras/blob/master/keras/metrics.py#L439