Bir model için bir AUC ölçümü uygulamaya çalışıyorum, böylece bir doğrulama setim model.fit() çalışması sırasında çalıştırdıktan sonra AUC ölçümü yapıyorum. Doğrulama veri kümesinin değerlendirmesini desteklemek için keeler için bir AUC metriğinin tanımlanması
Ben bu kadar metrik tanımlayın: Bu anlıyorum bilmiyor musun aşağıdaki hatasıdef auc(y_true, y_pred):
keras.backend.get_session().run(tf.global_variables_initializer())
keras.backend.get_session().run(tf.initialize_all_variables())
keras.backend.get_session().run(tf.initialize_local_variables())
#return K.variable(value=tf.contrib.metrics.streaming_auc(
# y_pred, y_true)[0], dtype='float32')
return tf.contrib.metrics.streaming_auc(y_pred, y_true)[0]
. çevrimiçi okuma itibaren
tensorflow.python.framework.errors_impl.FailedPreconditionError:
Attempting to use uninitialized value auc/true_positives...
, sorunun 2 kat, çıkarsama yerel değişkenleri başlatamadı olmak tensorflow ile tensorflow/keras bulunan böcek ve kısmen ve sorunun olduğu görülmektedir. Bu 2 konu göz önüne alındığında, neden bu hatayı aldığımı veya nasıl üstesinden geleceğimi anlamıyorum. Baska öneri?
Tembel olmadığımı göstermek için, yalnızca iyi çalışan 2 başka metrik yazdım. Eğer auc tensörünü
def auc(y_true, y_pred):
auc = tf.metrics.auc(y_true, y_pred)[1]
K.get_session().run(tf.local_variables_initializer())
return auc
Bu sıfırlara TP, FP, TN, FN başlatır dönmeden önce
# PFA, prob false alert for binary classifier
def binary_PFA(y_true, y_pred, threshold=K.variable(value=0.5)):
y_pred = K.cast(y_pred >= threshold, 'float32')
# N = total number of negative labels
N = K.sum(1 - y_true)
# FP = total number of false alerts, alerts from the negative class labels
FP = K.sum(y_pred - y_pred * y_true)
return FP/N
# P_TA prob true alerts for binary classifier
def binary_PTA(y_true, y_pred, threshold=K.variable(value=0.5)):
y_pred = K.cast(y_pred >= threshold, 'float32')
# P = total number of positive labels
P = K.sum(y_true)
# TP = total number of correct alerts, alerts from the positive class labels
TP = K.sum(y_pred * y_true)
return TP/P