代码之家  ›  专栏  ›  技术社区  ›  H. Senkaya

tensorflow-tf。confusion\u matrix()抛出错误值错误:形状(2,2048,2)必须具有秩2

  •  1
  • H. Senkaya  · 技术社区  · 6 年前

    我试图确定我的神经网络模型的混淆矩阵 是使用google tensorflow用python编写的。 通过使用这段代码:

    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:形状(2,2048,2)必须具有等级2

    至少您应该知道验证标签的数组 Batch\u val\u标签 是一个 一个热阵列 。 有人能帮我吗?提前感谢!

    1 回复  |  直到 6 年前
        1
  •  4
  •   H. Senkaya    6 年前

    问题是我正在使用 一个热阵列 。 遵循本说明: Tensorflow confusion matrix using one-hot code

    我更改了这段代码:

    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))