我想建立一个神经网络,它接受一个简单的一维输入向量。但是,以下代码给出了一个错误:

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

08-24 12:44