当我将 numpy 数组作为输入传递给 keras 层时,它具有不同的形状

numpy array has different shape when I pass it as input to a keras layer

我有一个这样构建的 keras 编码器(自动编码器的一部分):

input_vec = Input(shape=(200,))
encoded = Dense(20, activation='relu')(input_vec)
encoder = Model(input_vec, encoded)

我想使用 numpy 生成虚拟输入。

>>> np.random.rand(200).shape
(200,)

但是如果我尝试将它作为输入传递给编码器,我会得到一个 ValueError:

>>> encoder.predict(np.random.rand(200))
>>> Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/francesco/PycharmProjects/W2VAutoencoded/venv/lib/python3.6/site-packages/keras/engine/training.py", line 1817, in predict
    check_batch_axis=False)
  File "/home/francesco/PycharmProjects/W2VAutoencoded/venv/lib/python3.6/site-packages/keras/engine/training.py", line 123, in _standardize_input_data
    str(data_shape))
ValueError: Error when checking : expected input_1 to have shape (200,) but got array with shape (1,)

我错过了什么?

虽然 Keras LayersInputDense 等)将单个样本的形状作为参数,但 Model.predict() 将批处理输入作为输入数据(即堆叠在第一维上的样本)。

现在您的模型认为您正在向它传递一批 200 个形状为 (1,).

的样本

这可行:

batch_size = 1
encoder.predict(np.random.rand(batch_size, 200))