Minimal Deep Q Learning (DQN & DDQN) implementations in Keras
deep-reinforcement-learningdeep-q-networkdqnreinforcement-learningdeep-learningddqn
주요 지표
스타 성장
스타
1.3k
포크
450
주간 성장
+0
이슈
0
5001k
2023년 1월2023년 8월2024년 4월2024년 11월2025년 7월2026년 3월2026년 10월
아티팩트PyPI
README
deep-q-learning
Introduction to Making a Simple Game AI with Deep Reinforcement Learning

Minimal and Simple Deep Q Learning Implemenation in Keras and Gym. Under 100 lines of code!
The explanation for the dqn.py code is covered in the blog article
https://keon.kim/writing/deep-q-learning/
I made minor tweaks to this repository such as load and save functions for convenience.
I also made the memory a deque instead of just a list.
This is in order to limit the maximum number of elements in the memory.
The training might be unstable for dqn.py. This problem is mitigated in ddqn.py.
I'll cover ddqn in the next article.
Changelog
2026-05
- Migrated from
gymtogymnasiumand updated for the modern reset/step API. - Updated for Keras 3 (
Adam(learning_rate=),Inputlayer,keras.losses.Huber). ddqn.pynow implements actual Double DQN (online net selects, target net evaluates).- Removed CartPole-specific reward shaping from
ddqn.pyso it's env-agnostic. save()/load()now persistepsilonalongside the weights.
2018-08
- Split batched-update training into its own file (
dqn_batch.py).
2017-06
- Added Double DQN with Huber loss in
ddqn.py. - Added
requirements.txt.
2017-05
- Migrated to the Keras 2 API.
- Hyperparameter tuning that finally got
dqn.pylearning reliably on CartPole.
2017-02
- Initial release: DQN agent on CartPole with experience replay (
deque-bounded memory) andsave/loadhelpers.