을 계산하는 방법 F1 매크로에서 Keras?
나는've 도를 사용하여 코드정에서 Keras 기 전에 그들은 그'다시 제거됩니다. 여기's 코드:
def precision(y_true, y_pred):
true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
precision = true_positives / (predicted_positives + K.epsilon())
return precision
def recall(y_true, y_pred):
true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
recall = true_positives / (possible_positives + K.epsilon())
return recall
def fbeta_score(y_true, y_pred, beta=1):
if beta < 0:
raise ValueError('The lowest choosable beta is zero (only precision).')
# If there are no true positives, fix the F score at 0 like sklearn.
if K.sum(K.round(K.clip(y_true, 0, 1))) == 0:
return 0
p = precision(y_true, y_pred)
r = recall(y_true, y_pred)
bb = beta ** 2
fbeta_score = (1 + bb) * (p * r) / (bb * p + r + K.epsilon())
return fbeta_score
def fmeasure(y_true, y_pred):
return fbeta_score(y_true, y_pred, beta=1)
에서 무엇을 보았(i'm 는 아마추어에서),인들과 사용하여 올바른 공식입니다. 하지만 가려고 했으로 그것을 사용하는 메트릭 교육 과정에서,나는 정확히 동일한 출력 val_accuracy,val_precision,val_recall 및 val_fmeasure. 나는 그것을 믿는 그 일이 일어날 수 있는 경우에도 공식 정확하지만,저는 그것을 믿지 않습니다. 어떤 설명은 이 문제에 대한? 감사
27
6
이후 Keras2.0 메트릭 f1,정밀도,기억이 제거되었습니다. 이 솔루션은 사용하는 사용자 지정 메트릭 기능:
반인의 이 기능
수정된 추가 일정한 엡실론,을 피하기 위해서는 0 으로 나누. 따라서 할머니는 것이 되지 않을 계산됩니다.
를 사용하여 Keras 메트릭 기능하지 않은 오른쪽을 계산하는 방법 F1 또는 AUC 또는 무언가 다음과 같다.
그 이유는 메트릭 함수가 호출에 각 배치 단계에 유효성 검사를 수행합니다. 는 방법 Keras 시스템을 계산한 평균에 배치의 결과입니다. 과하지 않는 다른 F1 점수입니다.
그 이유는 F1 점수를 얻었에서 제거 메트릭 기능에 keras. 는 여기를 참조하십시오:
-https://github.com/keras-team/keras/commit/a56b1a55182acf061b1eb2e2c86b48193a0e88f7 -https://github.com/keras-team/keras/issues/5794
을 할 올바른 방법으로 이 사용하는 사용자 정의 콜백 함수에서 방법은 다음과 같다:
-https://github.com/PhilipMay/mltb#module-keras -https://medium.com/@thongonary/how-to-compute-f1-score-for-each-epoch-in-keras-a1acd17715a2
또한 건 이력
-설치keras_metrics패키지 ybubnov -화 모델입니다.맞(nb_epoch=1,...)`안에 대한 반복을 활용하는 정밀도/회수 통계 출력된 후의 모든 시대
무언가 이것을 좋아한다:
무엇으로@Pedia 에서 말씀하신,위의 댓글
on_epoch_end
서에 명시된 바와 같이github.com/fchollet/keras/issues/5400하는 가장 좋은 방법입니다.이 스트리밍 사용자 지정 f1_score 메트릭터들을 사용하여 하위 클래스. 그것은 작품에 대한 TensorFlow2.0 베타나지 않았't 에 다른 버전입니다. 그것이 무엇's 이 그 일을 추적을 유지의 진정한 양성,예측 판정,그리고 가능한 모든 반응을 통해 전체 시대하고 다음 계산 f1 점수의 끝에서 epoch. 나는 생각한 다른 응답만을 주는 f1 대한 점수를 각각의 일괄 처리는't 이 정말 최고의 측정할 때 우리가 정말 원하 f1 점수의 모든 데이터입니다.
내가 원의 수정되지 않은 복사본을 Aurélien Geron 새로운 책을 손에서는 기계와 함께 학습 은 학&Tensorflow2.0 고 그것을 권장합니다. 이것은 어떻게 배웠는 방법을 이 f1 사용자 지정 메트릭을 사용하여 서브 클래스입니다. It's 손을 아래로 가장 포괄적인 TensorFlow 책've 이제까지 볼 수 있습니다. TensorFlow 심각하게 고통에서 엉덩이를 배우고 이 사람을 낳는 코딩 기초하여 많은 것을 배울 수 있습니다.
참고:에서 메트릭을 넣어 괄호 안에서 f1_score()또는 다른 것't work.
pip 설치 tensorflow==2.0.0beta1
로@Diesche 언급하는 주요 문제에서 구현 f1_score 이 방법이라고에서 모든 일괄 처리 단계에 이르게 결과가 있습니다.더 보기
나는've 고는 약간의 시간과 함께 이 문제지만 결국 내 주위에 방법을 사용하여 문제는 callback:의 끝에서 획기적인 콜백을 예측 데이터에 대한(이 경우에는 선택을 적용하는 유효성 검사 데이터는)새로운 모델을 매개 변수와 당신에게 일관성 지표에 대한 평가의 모든 시대.
나는'm 를 사용하여 tensorflow-gpu(1.14.0)에 python3
기능
from_proba_to_output
는 다음과 같습니다:그때 나는 기차 나 모델 참조하여 이 메트릭스에서 콜백의 일부 fit_generator. 하지 않았 세부 사항의 구현은 내 train_generator 및 valid_generator 으로 이러한 데이터는 발전기는 특정한 분류의 문제를 손에 게시하는 것만 가지고 혼란이 있습니다.