#label #classification #prediction #binary-data #sigmoid
Вопрос:
Я обучил модель CNN с плотным слоем в конце, используя сигмоидальную функцию:
model.add(layers.Dense(1, activation='sigmoid'))
Я также скомпилировал с использованием двоичной перекрестной энтропии:
model.compile(loss='binary_crossentropy', optimizer = 'Adam', metrics=[tf.keras.metrics.Precision(),tf.keras.metrics.Recall(),'accuracy'])
Оценка f1 по классификации двоичных изображений низкая, и моя модель предсказывает один класс по сравнению с другим. Поэтому я решил добавить пороговое значение, основанное на вероятности вывода моей сигмоидной функции на последнем слое:
c = load_img('/home/kenan/Desktop/COV19D/validation/covid/ct_scan_19/120.jpg', color_mode='grayscale', target_size = (512,512)) c=img_to_array(c) c= np.expand_dims(c, axis=0) pred = model.predict_proba(c) pred y_classes = ((model.predict(c)gt; 0.99) 0).ravel() y_classes
Я хочу использовать «pred» в своем коде в качестве вероятности класса, но она всегда равна либо 0, либо 1, как показано ниже:
Out[113]: array([[1.]], dtype=float32)
почему это не дает вероятности предсказания класса между [0,1] вместо 1? есть ли способ получить вероятность класса в моем случае, а не 0 или 1?