当我将 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 Layers
(Input
、Dense
等)将单个样本的形状作为参数,但 Model.predict()
将批处理输入作为输入数据(即堆叠在第一维上的样本)。
现在您的模型认为您正在向它传递一批 200
个形状为 (1,)
.
的样本
这可行:
batch_size = 1
encoder.predict(np.random.rand(batch_size, 200))
我有一个这样构建的 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 Layers
(Input
、Dense
等)将单个样本的形状作为参数,但 Model.predict()
将批处理输入作为输入数据(即堆叠在第一维上的样本)。
现在您的模型认为您正在向它传递一批 200
个形状为 (1,)
.
这可行:
batch_size = 1
encoder.predict(np.random.rand(batch_size, 200))