DQN植物浇水决策模型predict输入维度不匹配报错求解
错误原因
你的模型输入层要求3维输入,格式为(样本数, 窗口长度, 特征数),从你定义的网络结构里Flatten(input_shape=(1, 2))可以看出,窗口长度固定为1,特征数固定为2(对应土壤湿度、降水概率两个参数),你之前两次调用传入的数组维度都不符合要求。
解决代码
你只需要把输入数组调整为3维格式即可,同时可以直接基于输出的Q值得到最优动作和置信度:
# 构造输入,调整为(1, 1, 2)的3维格式 input_data = np.expand_dims(np.expand_dims(np.array([30, 30]), axis=0), axis=0) # 推理得到每个动作对应的Q值 q_values = dqn.model.predict(input_data, verbose=0)[0] # 最优动作:取Q值最大的索引 best_action = np.argmax(q_values) # 置信度:最优动作Q值占所有动作Q值总和的比例 confidence = q_values[best_action] / np.sum(q_values) print(f"最优执行动作: {best_action}") print(f"置信度: {confidence:.2f}")
你也可以用reshape方法实现同样的维度调整效果:
input_data = np.array([30,30]).reshape(1,1,2)
动作含义对应
和你环境定义的逻辑一致:
- 0:不浇水
- 1:浇水3秒
- 2:浇水4秒
- 3:浇水5秒
- 4:浇水6秒
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

