#python #tensorflow #machine-learning #keras #conv-neural-network
Вопрос:
Я построил двоичный классификатор CNN, чтобы различать пациентов с респираторными заболеваниями по спектрограммам звука их кашля. Модель работала довольно хорошо во всем, с высокой точностью и точностью проверки. Однако, когда я обработал результаты model.predict(val_set), результаты кажутся совершенно случайными. Я подозреваю, что допустил некоторую ошибку в изменении выходных данных.
Сначала я сгенерировал набор проверки следующим образом
val_set = tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
validation_split=0.1,
subset="validation",
seed=123,
image_size = (image_height, image_width),
batch_size = batch_size)
Затем я разделил набор данных на test_images и test_labesl следующим образом
test_labels = np.concatenate([y for x, y in val_set], axis=0)
test_images = np.concatenate([x for x, y in val_set], axis=0)
Затем я подключил test_images к модели, и она выдала следующее, какова вероятность того, что вы заболеете или нет
[[0.000000e 00 1.000000e 00]
[1.000000e 00 0.000000e 00]
[2.143078e-19 1.000000e 00]
...
[0.000000e 00 1.000000e 00]
[0.000000e 00 1.000000e 00]
[0.000000e 00 1.000000e 00]]
После этого я обработал этот массив, взяв ng.argmax. 728-это общее количество элементов в наборе проверки
predict = []
label = []
for i in range(0,728):
predict.append(np.argmax(test_predict[i]))
for i in range (0,728):
if test_label[i] == 2:
label.append(1)
else:
label.append(0)
test_predict = predict
test_predict = np.array(predict)
test_label = np.array(label)
test_label = test_label.astype('float64')
Наконец, подключив метку и прогноз к матрице путаницы и ROC, AUC, я получаю следующие результаты, но модель. оценка(val_set) дает совершенно другой результат. Я неправильно обработал информацию или моя модель просто плохая?
Матрица путаницы:
tf.Tensor(
[[101 163]
[197 267]], shape=(2, 2), dtype=int32)
модель.оценка(val_set)
23/23 [==============================] - 561s 24s/step - loss: 16.6204 - accuracy: 0.8407
[16.620380401611328, 0.8406593203544617]
Really bad ROC and AUC