我正在尝试在Keras中建立一个非常简单的功能神经网络。我向网络输入了形状为(270000,)
的向量,并且已经将其输入为要在输入层中接受的形状,但是我收到了如下所示的错误。鉴于为指定为错误的输入而打印的形状实际上是(270000,)
,所以我不知道为什么会收到此错误。
模型功能
def spectrify(A1, y1, simData, aOrigShape):
print("A1: ", np.shape(A1))
print("y1: ", np.shape(y1))
print("simData", np.shape(simData))
print("aOrigShape:", aOrigShape)
dataIn = Input(shape=np.shape(A1))
dataOut = Dense(np.shape(A1)[0])(dataIn)
outShaper = Reshape((aOrigShape))(dataOut)
model = Model(inputs = dataIn, outputs = outShaper)
model.compile(optimizer = 'rmsprop',
loss = 'categorical_crossentropy',
metrics = ['accuracy'])
model.fit(A1, simData)
return model
执行
运行上面的函数会打印形状并引发以下错误:
A1: (270000,)
y1: (200, 540)
simData (200, 400)
aOrigShape: (500, 540)
...
<ipython-input-130-88e6c1dfc1c9> in spectrify(A1, y1, simData, aOrigShape)
12 loss = 'categorical_crossentropy',
13 metrics = ['accuracy'])
---> 14 model.fit(A1, simData)
15 return model
...
ValueError: Error when checking input: expected input_50 to have shape (270000,) but got array with shape (1,)
答案 0 :(得分:0)
shape
参数是指训练数据中一个样本的形状。因此,如果您有270000个形状为(1,)
的训练样本,则必须将shape
参数设置为(1,)
。否则,这不太可能,但有可能,如果您有一个形状为(270000,)
的样本,则需要将shape参数设置为(270000,)
,并且A
的形状必须为{{1} },表示一个形状为(1, 270000)
的样本,而不是(270000,)
,这表示270000个形状为(270000,)
的样本。
通常,如果(1,)
是包含训练数据的数组,那么最好使用X_train
(即每个样本的形状)作为输入形状,如下所示:>
X_train.shape[1:]