ValueError:检查时出错:预期dense_1_input 具有形状(3,) 但得到形状为(1,) 的数组

송준석*_*송준석 2 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'])
Run Code Online (Sandbox Code Playgroud)

我把输入的形式写成如下。

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)
Run Code Online (Sandbox Code Playgroud)

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

ValueError:检查时出错:预期dense_1_input 具有形状(3,) 但得到形状为(1,) 的数组

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

我怎么解决这个问题?

Max*_*xim 5

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

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

解决方法很简单,就是转置x