ValueError:检查时出错:期望的dense_1_input具有形状(3,)但是具有形状的数组(1,)

时间:2018-05-14 17:42:24

标签: python numpy machine-learning neural-network keras

我正在尝试使用学习过的.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_1_input具有形状(3,)但是具有形状的数组(1,)

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

  

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

你是对的,但是不是 keras所期望的。它期望(1, 3)形状:按照惯例,轴0表示批量大小,轴1表示特征。第一个Dense图层接受3个功能,这就是它只看到一个时就会抱怨的原因。

解决方案只是转置x