tenorflow - tf.confusion_matrix () выдает ошибку ValueError: Shape (2, 2048, 2) должен иметь ранг 2 - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь определить confusion_matrix моей модели нейронной сети, которая написано на python с помощью Google Tenorflow. Используя этот кусок кода:

cm = tf.zeros(shape=[2,2], dtype=tf.int32)

for i in range(0, validation_data.shape[0], batch_size_validation):
    batched_val_data = np.array(validation_data[i:i+batch_size_validation, :, :], dtype='float')
    batched_val_labels = np.array(validation_labels[i:i+batch_size_validation, :], dtype='float')

    batched_val_data = batched_val_data.reshape((-1, n_chunks, chunk_size))            

    _acc, _c, _p = sess.run([accuracy, correct, pred], feed_dict=({x:batched_val_data, y:batched_val_labels}))

    #batched_val_labels.shape ==> (2048, 2)
    #_p.shape                 ==> (2048, 2)
    #this piece of code throws the error!
    cm = tf.confusion_matrix(labels=batched_val_labels, predictions=_p)

Я получаю следующую ошибку: ValueError: Shape (2, 2048, 2) должен иметь ранг 2

По крайней мере, вы должны знать, что массив для меток проверки batched_val_labels - это один горячий массив . Может кто-нибудь помочь мне, пожалуйста? Заранее спасибо!

1 Ответ

0 голосов
/ 10 мая 2018

Проблема заключалась в том, что я использую один горячий массив .Следуя этой инструкции: Матрица путаницы в тензорном потоке с использованием кода быстрого доступа

Я изменил этот фрагмент кода:

cm = tf.confusion_matrix(labels=batched_val_labels, predictions=_p)

на:

cm = tf.confusion_matrix(labels=tf.argmax(batched_val_labels, 1), predictions=tf.argmax(_p, 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...