Numpy ValueError:检查时出错:预期输入_2具有形状(162),但获得具有形状(1,)的数组

Numpy ValueError:检查时出错:预期输入_2具有形状(162),但获得具有形状(1,)的数组,numpy,keras,theano,Numpy,Keras,Theano,我在Keras中定义了以下模型: init_weights = he_normal() main_input = Input(shape=(FEATURE_VECTOR_SIZE,)) #size 54 aux_input = Input(shape=(AUX_FEATURE_VECTOR_SIZE,)) #size 162 merged_input = concatenate([main_input, aux_input]) shared1 = Dense(164, activation='

我在Keras中定义了以下模型:

init_weights = he_normal()
main_input = Input(shape=(FEATURE_VECTOR_SIZE,)) #size 54
aux_input = Input(shape=(AUX_FEATURE_VECTOR_SIZE,)) #size 162
merged_input = concatenate([main_input, aux_input])

shared1 = Dense(164, activation='relu', kernel_initializer=init_weights)(merged_input)
shared2 = Dense(150, activation='relu', kernel_initializer=init_weights)(shared1)

main_output = Dense(NUM_ACTIONS, activation='linear', kernel_initializer=init_weights, name='main_output')(shared2)
aux_output = Dense(1, activation='linear', kernel_initializer=init_weights, name='aux_output')(shared2)

rms = RMSprop(lr=ALPHA)
model = Model(inputs=[main_input, aux_input], outputs=[main_output, aux_output])
model.compile(optimizer=rms, loss='mse')
稍后,我尝试使用它进行预测,如下所示:

aux_dummy = np.zeros(shape=(AUX_FEATURE_VECTOR_SIZE,))
print(aux_dummy.shape)
print(aux_dummy)
q_vals, _ = model.predict([encode_1_hot(next_state), aux_dummy], batch_size=1)
但是,我收到一个错误,抱怨辅助输入的形状不正确(Keras声称它应该是形状(162),实际上是形状(1)

但当我打印出形状时,我得到的正是它想要的(见下文)

(162,) [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] 回溯(最近一次呼叫最后一次): 文件“grid_exp.py”,第94行,在 RLU插曲(最大步数) 文件“/Users/ZerkTheMighty/Code/RL2/project/Gridworld/rl_glue.py”,第220行,在rl_插曲中 rl_步骤结果=rl_步骤() 文件“/Users/ZerkTheMighty/Code/RL2/project/Gridworld/rl_glue.py”,rl_步骤第151行 最后一个动作=agent.agent\u步骤(结果['repair'],结果['state']) 文件“/Users/ZerkTheMighty/Code/RL2/project/Gridworld/grid_agent.py”,第170行,在agent_步骤中 q\u VAL,\u=model.predict([编码\u 1\u热(下一个\u状态),辅助\u伪],批次大小=1) 文件“/Users/ZerkTheMighty/Code/RL2/lib/python2.7/site packages/keras/engine/training.py”,第1817行,在predict中 检查(批次轴=假) 文件“/Users/ZerkTheMighty/Code/RL2/lib/python2.7/site packages/keras/engine/training.py”,第123行,输入数据 str(数据形状)) ValueError:检查时出错:预期输入_2具有形状(162),但获得具有形状(1,)的数组 我不知道我应该改变什么才能让它发挥作用,但我怀疑我忽略了一些显而易见的东西。建议

我正在使用Keras 2.1.5、Theano 1.0.1、numpy 1.14.2和python 2.7.12

aux_dummy = np.zeros(shape=(1,AUX_FEATURE_VECTOR_SIZE,))
第一个维度需要指定模型的示例数。

尝试以下操作:

 q_vals, _ = model.predict([[encode_1_hot(next_state), aux_dummy]], batch_size=1)

[[]]
就像您给出的表单一样

我猜是1个元素的对象dtype arraymodel.predict([[data]])。那就是[[]]。
 q_vals, _ = model.predict([[encode_1_hot(next_state), aux_dummy]], batch_size=1)