ValueError: Error when checking : expected input_2 to have shape (162,) but got array with shape (1,)
ValueError: Error when checking : expected input_2 to have shape (162,) but got array with shape (1,)
我在 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.]
Traceback (most recent call last):
File "grid_exp.py", line 94, in
RL_episode(max_steps)
File "/Users/ZerkTheMighty/Code/RL2/project/Gridworld/rl_glue.py", line 220, in RL_episode
rl_step_result = RL_step()
File "/Users/ZerkTheMighty/Code/RL2/project/Gridworld/rl_glue.py", line 151, in RL_step
last_action = agent.agent_step(result['reward'],result['state'])
File "/Users/ZerkTheMighty/Code/RL2/project/Gridworld/grid_agent.py", line 170, in agent_step
q_vals, _ = model.predict([encode_1_hot(next_state), aux_dummy], batch_size=1)
File "/Users/ZerkTheMighty/Code/RL2/lib/python2.7/site-packages/keras/engine/training.py", line 1817, in predict
check_batch_axis=False)
File "/Users/ZerkTheMighty/Code/RL2/lib/python2.7/site-packages/keras/engine/training.py", line 123, in _standardize_input_data
str(data_shape))
ValueError: Error when checking : expected input_2 to have shape (162,) but got array with shape (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)
[[]]
就像你给的表格
我在 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.] Traceback (most recent call last): File "grid_exp.py", line 94, in RL_episode(max_steps) File "/Users/ZerkTheMighty/Code/RL2/project/Gridworld/rl_glue.py", line 220, in RL_episode rl_step_result = RL_step() File "/Users/ZerkTheMighty/Code/RL2/project/Gridworld/rl_glue.py", line 151, in RL_step last_action = agent.agent_step(result['reward'],result['state']) File "/Users/ZerkTheMighty/Code/RL2/project/Gridworld/grid_agent.py", line 170, in agent_step q_vals, _ = model.predict([encode_1_hot(next_state), aux_dummy], batch_size=1) File "/Users/ZerkTheMighty/Code/RL2/lib/python2.7/site-packages/keras/engine/training.py", line 1817, in predict check_batch_axis=False) File "/Users/ZerkTheMighty/Code/RL2/lib/python2.7/site-packages/keras/engine/training.py", line 123, in _standardize_input_data str(data_shape)) ValueError: Error when checking : expected input_2 to have shape (162,) but got array with shape (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)
[[]]
就像你给的表格