运行deep-q-trading股票预测代码出现DQN模型输出shape错误如何解决
问题修复方案
根因说明
你遇到的报错属于依赖库版本不兼容导致的形状校验逻辑误判:你的模型输出形状(?,3)完全符合DQN要求的3个动作维度,只是旧版keras-rl和高版本TensorFlow搭配时会触发这个误判bug。
可行修复步骤(按优先级尝试)
方案1:替换为项目匹配的依赖版本(最稳妥)
- 先卸载现有冲突依赖:
pip uninstall tensorflow keras keras-rl -y - 安装项目兼容的指定版本:
pip install tensorflow==1.15.0 keras==2.2.4 keras-rl==0.4.2
版本对齐后重新运行命令即可正常执行。
- 先卸载现有冲突依赖:
方案2:修改模型输入层(版本调整后仍报错时使用)
原模型冗余的维度会加重版本兼容问题,直接修改main.py中的模型架构为:model = Sequential() # 去掉多余的1维度,删除Flatten层 model.add(Dense(35,activation='linear', input_shape=(68,))) model.add(LeakyReLU(alpha=.001)) model.add(Dense(nb_actions)) model.add(Activation('linear'))方案3:跳过误判的校验逻辑(不想调整版本时快速解决)
打开报错提示的/Users/anisschohra/.local/lib/python3.7/site-packages/rl/agents/dqn.py文件,找到第107行的raise ValueError语句,直接注释掉该行即可,你的模型输出本身符合要求,校验逻辑属于误报。
如果需要消除开头的TensorFlow弃用警告,在main.py开头添加以下代码即可:
import tensorflow as tf tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)
内容的提问来源于stack exchange,提问作者Aniss Chohra
相关产品推荐
相关产品推荐

