我尝试使用学习到的.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文件)。
如何解决这个问题?
回答:
x
的形状显然是(3,1)
,但上述错误持续存在。
你是对的,但这并非keras所期望的。keras期望的是(1, 3)
的形状:按照惯例,第0轴表示批量大小,第1轴表示特征。第一个Dense
层接受3个特征,这就是为什么它在看到只有一个特征时会报错。
解决方案很简单,只需转置x
即可。