我想建立一个神经网络,它接受一个简单的一维输入向量。但是,以下代码给出了一个错误:
import numpy as np
from keras.models import Model
from keras.layers import Input, Dense
input_ = Input((311,))
x = Dense(200)(input_)
output = Dense(100)(x)
nn = Model([input_], [output])
nn.compile('SGD', loss='mean_squared_error')
nn.predict(np.zeros(311))
值错误:检查时出错:预期输入1具有形状(311,),但获取的数组具有形状(1,)
这对我来说很奇怪,因为
print(np.zeros(311).shape)
按预期打印(311,)
。将
np.zeros(311)
更改为np.zeros((311,))
不会改变任何内容,将Input((311,))
替换为Input(311)
也不起作用,因为Input
需要形状元组:
TypeError:“int”对象不可iterable
如何正确地为keras模型提供一维向量?
最佳答案
predict
的第一个维度必须是批处理维度,即predict(np.zeros(shape=(1, 311)))
应该可以工作。
有关详细信息,请参见documentation。