我正在使用 Keras 的深度 q 学习代理之一:DQNAgent。当我将环境传递给 DQNAgent.fit 时,我收到以下错误:
**3 dqn.fit(env, nb_steps=50000, visualize=False, verbose=1)**
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training_utils_v1.py in standardize_input_data(数据,名称,形状,check_batch_axis,exception_prefix)
655 ': expected ' + names[i] + ' to have ' + 656 str(len(shape)) + ' dimensions, but got array ' **657 'with shape ' + str(data_shape))** 658 if not check_batch_axis: 659 data_shape = data_shape[1:]
ValueError:检查输入时出错:预期的dense_18_input有2维,但得到了形状为(1、1、65)的数组
我的环境的状态和空间定义如下:
self.state = np.zeros(65, dtype=int)
self.action_space = spaces.Tuple((spaces.Discrete(64), spaces.Discrete(64)))
self.observation_space = spaces.Box(low=0, high=16, shape=(65,), dtype=np.int)
我正在使用以下模型:
states = env.observation_space.shape
actions = 64**2
def build_model(states, actions):
model = Sequential()
model.add(Dense(100, activation='relu', input_shape=states))
model.add(Dense(200, activation='relu'))
model.add(Dense(actions, activation='linear'))
return model
我的环境的状态向量的形状为 (65,),但 fit 方法将其增强到 (1, 1, 65) - 导致形状不匹配。需要明确的是,self.state 作为来自环境的观察返回。有谁知道为什么会这样?