我在尝试使用Keras做一个简单的“Hello World”示例时遇到了问题。起初我有一个输入和一个输出的单层网络,用于直线近似,效果还不错;)
之后我鼓起勇气尝试处理两个输入参数:
d = Dense(1, input_shape=(2,))for i in range(-100, 100): mo.train_on_batch(x = [np.array([i,i])], y = [i])np.array([1,1]).shape # 结果是(2,)
然而,我遇到了一个异常:
ValueError: 检查输入时出错:期望dense_53_input的形状为(2,),但得到的数组形状为(1,)
我尝试了各种组合,比如[[i],[i]]
。
回答:
在Keras中,第一个维度始终是批次维度。批次大小指的是一次通过(前向和后向)处理的样本数量。当你指定input_shape
参数时,它不包括批次维度。因此,输入形状为(2,)
的网络接受形状为(?,2)
的输入数据,其中?
表示批次大小。所以你必须传递形状为(?,2)
的数组:
mo.train_on_batch(x=[np.array([[i,i]])], y=[i])
因为:
np.array([[i,i]]).shape # 它的形状是(1,2)