Результат Keras Custom F1 и рассчитанный вручную показатель F1 дают совершенно разные результаты. - PullRequest
0 голосов
/ 17 сентября 2018

Я перешел по этой ссылке Как рассчитать макрос F1 в Керасе? , чтобы вычислить балл F1 моих двоичных данных.

И я также написал свой собственный код для вычисления балла F1 после оценкии прогноз завершен. Мой собственный код: :

model = VGG.build(80, 80, 6)
model.load_weights('/home/matlabclient01/Documents/Warfana/Final/models_6/m13.h5')
model.compile(loss="binary_crossentropy", optimizer=opt, metrics=[f1])

predY = model.predict(data, batch_size=1000, verbose=1)
y_classes = predY.argmax(axis=-1)    #y_classes contain predictions

#data1 contain actual labels
temp = data1
temp = np.array(temp)
results = y_classes == temp

TP = TN = FP = FN = 0

if len(y_classes) == len(temp):
    for i in range(len(y_classes)):
        if y_classes[i] == temp[i] and temp[i] == 1:
            TP=TP+1
        elif y_classes[i] == temp[i] and temp[i] == 0:
            TN=TN+1
        elif y_classes[i] != temp[i] and temp[i] == 1:
            FN=FN+1
        elif y_classes[i] != temp[i] and temp[i] == 0:
            FP=FP+1

print("TP = ",TP)
print("FP = ",FP)
print("TN = ",TN)
print("FN = ",FN)

precision = TP/(len(y_classes[y_classes==1]))
recall = TP/(len(temp[temp==1]))
fmeasure = (2*precision*recall)/(precision+recall)

print("FMeasure = ",fmeasure)

Это разные результаты. Пользовательская формула Keras и результаты моего собственного кода

Результаты:

1-я F-мера = 0,822 (Результаты из KerasПользовательская формула)

Last Fmeasure = 0,31 (Результаты из моего собственного кода)

...