代码之家  ›  专栏  ›  技术社区  ›  송준석

ValueError:检查时出错:预期dense\u 1\u输入具有形状(3,),但获得具有形状(1,)的数组

  •  2
  • 송준석  · 技术社区  · 6 年前

    我试图用学到的知识来预测。h5文件。 学习模型如下。

    model =Sequential()
    model.add(Dense(12, input_dim=3, activation='relu'))
    model.add(Dense(8, activation='relu'))
    model.add(Dense(4, activation='relu'))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(loss='binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
    

    我把输入的形式写如下。

    x = np.array([[band1_input[input_cols_loop][input_rows_loop]],[band2_input[input_cols_loop][input_rows_loop]],[band3_input[input_cols_loop][input_rows_loop]]])
    
    prediction_prob = model.predict(x)
    

    我认为形状是正确的,但出现了以下错误。

    ValueError:检查时出错:预期dense\u 1\u输入具有形状(3,),但获得具有形状(1,)的数组

    形状 x 显然是 (3,1) ,但上述错误并未消失(数据来自csv文件,格式为 (value 1, value 2, value 3, class) )。

    我如何解决这个问题?

    1 回复  |  直到 6 年前
        1
  •  5
  •   Maxim    6 年前

    x的形状很明显 (3,1) ,但上述错误仍在继续。

    你是对的,但那是 keras所期望的。它期望 (1, 3) 形状:按照惯例,轴0表示批次大小,轴1表示特征。第一个 Dense 图层可以接受3个特性,这就是为什么当它只看到一个特性时会抱怨的原因。

    解决方法很简单,就是换位 x