Got it β you want **one single markdown block** containing the entire README from title to author so you can copy it in one click.
Hereβs your complete README:
````markdown
# DeepQlearn
A simple and clean **Deep Q-Network (DQN)** implementation in PyTorch, packaged for easy installation via PyPI.
---
## β¨ Features
- Minimal, readable code for learning DQN fundamentals
- Works with any [Gym](https://www.gymlibrary.dev/) environment
- Epsilon-greedy exploration strategy
- Replay buffer for experience sampling
- Target network updates for stable training
- Implemented in [PyTorch](https://pytorch.org)
---
## π¦ Installation
```bash
pip install deepqlearn
````
## Requirements:
```bash
Python >= 3.8
PyTorch
Gym
```
---
## π Quick Start
```python
from deepqlearn import train_dqn
# Train on CartPole for 200 episodes
train_dqn(episodes=200)
```
---
## π API Reference
### `train_dqn(episodes=500, batch_size=64, target_update=10)`
Train a DQN agent on `CartPole-v1`.
**Parameters:**
* `episodes` *(int)* β Number of episodes to train for
* `batch_size` *(int)* β Mini-batch size for replay
* `target_update` *(int)* β Frequency (in episodes) to update the target network
---
### `DQNAgent`
A reinforcement learning agent using Deep Q-Learning.
**Constructor:**
```python
DQNAgent(
state_dim,
action_dim,
lr=1e-3,
gamma=0.99,
epsilon=1.0,
epsilon_min=0.01,
epsilon_decay=0.995
)
```
**Key Methods:**
* `act(state)` β Choose an action given a state
* `remember(state, action, reward, next_state, done)` β Store experience in replay buffer
* `replay(batch_size)` β Train from replay buffer
* `update_target()` β Update target network with policy weights
---
## π Example Training Script
```python
import gym
from deepqlearn import DQNAgent
env = gym.make("CartPole-v1")
agent = DQNAgent(env.observation_space.shape[0], env.action_space.n)
for episode in range(100):
state = env.reset()[0]
done = False
total_reward = 0
while not done:
action = agent.act(state)
next_state, reward, done, _, _ = env.step(action)
agent.remember(state, action, reward, next_state, done)
agent.replay(batch_size=64)
state = next_state
total_reward += reward
agent.update_target()
print(f"Episode {episode} β Reward: {total_reward}")
env.close()
```
---
## π Project Structure
```bash
deepqlearn/
β
βββ src/
β βββ deepqlearn/
β βββ __init__.py
β βββ agent.py
β βββ network.py
β βββ replay_buffer.py
β βββ train.py
β
βββ pyproject.toml
βββ setup.cfg
βββ README.md
βββ LICENSE
βββ .gitignore
```
---
## β License
MIT License
---
## π€ Author
Prathamesh Jadhav
Raw data
{
"_id": null,
"home_page": null,
"name": "deepqlearn",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "deep q network, dqn, reinforcement learning",
"author": "Prathamesh Jadhav",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/f0/5d/8645a9481e8f44c3fc1eedd3f80966e516dfd610f295dd399fb6aa1c5e91/deepqlearn-0.1.1.tar.gz",
"platform": null,
"description": "Got it \u2014 you want **one single markdown block** containing the entire README from title to author so you can copy it in one click.\n\nHere\u2019s your complete README:\n\n````markdown\n# DeepQlearn\n\nA simple and clean **Deep Q-Network (DQN)** implementation in PyTorch, packaged for easy installation via PyPI.\n\n---\n\n## \u2728 Features\n- Minimal, readable code for learning DQN fundamentals\n- Works with any [Gym](https://www.gymlibrary.dev/) environment\n- Epsilon-greedy exploration strategy\n- Replay buffer for experience sampling\n- Target network updates for stable training\n- Implemented in [PyTorch](https://pytorch.org)\n\n---\n\n## \ud83d\udce6 Installation\n\n```bash\npip install deepqlearn\n````\n\n## Requirements:\n\n```bash\nPython >= 3.8\nPyTorch\nGym\n```\n\n---\n\n## \ud83d\ude80 Quick Start\n\n```python\nfrom deepqlearn import train_dqn\n\n# Train on CartPole for 200 episodes\ntrain_dqn(episodes=200)\n```\n\n---\n\n## \ud83d\udcda API Reference\n\n### `train_dqn(episodes=500, batch_size=64, target_update=10)`\n\nTrain a DQN agent on `CartPole-v1`.\n\n**Parameters:**\n\n* `episodes` *(int)* \u2192 Number of episodes to train for\n* `batch_size` *(int)* \u2192 Mini-batch size for replay\n* `target_update` *(int)* \u2192 Frequency (in episodes) to update the target network\n\n---\n\n### `DQNAgent`\n\nA reinforcement learning agent using Deep Q-Learning.\n\n**Constructor:**\n\n```python\nDQNAgent(\n state_dim,\n action_dim,\n lr=1e-3,\n gamma=0.99,\n epsilon=1.0,\n epsilon_min=0.01,\n epsilon_decay=0.995\n)\n```\n\n**Key Methods:**\n\n* `act(state)` \u2192 Choose an action given a state\n* `remember(state, action, reward, next_state, done)` \u2192 Store experience in replay buffer\n* `replay(batch_size)` \u2192 Train from replay buffer\n* `update_target()` \u2192 Update target network with policy weights\n\n---\n\n## \ud83d\udcdd Example Training Script\n\n```python\nimport gym\nfrom deepqlearn import DQNAgent\n\nenv = gym.make(\"CartPole-v1\")\nagent = DQNAgent(env.observation_space.shape[0], env.action_space.n)\n\nfor episode in range(100):\n state = env.reset()[0]\n done = False\n total_reward = 0\n while not done:\n action = agent.act(state)\n next_state, reward, done, _, _ = env.step(action)\n agent.remember(state, action, reward, next_state, done)\n agent.replay(batch_size=64)\n state = next_state\n total_reward += reward\n agent.update_target()\n print(f\"Episode {episode} \u2014 Reward: {total_reward}\")\n\nenv.close()\n```\n\n---\n\n## \ud83d\udcc2 Project Structure\n\n```bash\ndeepqlearn/\n\u2502\n\u251c\u2500\u2500 src/\n\u2502 \u2514\u2500\u2500 deepqlearn/\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 agent.py\n\u2502 \u251c\u2500\u2500 network.py\n\u2502 \u251c\u2500\u2500 replay_buffer.py\n\u2502 \u251c\u2500\u2500 train.py\n\u2502\n\u251c\u2500\u2500 pyproject.toml\n\u251c\u2500\u2500 setup.cfg\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 LICENSE\n\u2514\u2500\u2500 .gitignore\n```\n\n---\n\n## \u2696 License\n\nMIT License\n\n---\n\n## \ud83d\udc64 Author\n\nPrathamesh Jadhav\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A simple Deep Q-Network implementation in PyTorch",
"version": "0.1.1",
"project_urls": {
"Homepage": "https://github.com/yourusername/deepqlearn",
"Issues": "https://github.com/yourusername/deepqlearn/issues"
},
"split_keywords": [
"deep q network",
" dqn",
" reinforcement learning"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "591145a69fb1169a25de9a0285db818d2ce6cd9e1b7652764b6c53c3d9ea0c74",
"md5": "fbd43ccbef62823e925e878e41b0dbfd",
"sha256": "89de6d110825de9d533c1fb581cc00a77c4f3d67d9d5ee885607765369e80d38"
},
"downloads": -1,
"filename": "deepqlearn-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fbd43ccbef62823e925e878e41b0dbfd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 5563,
"upload_time": "2025-08-14T10:15:41",
"upload_time_iso_8601": "2025-08-14T10:15:41.057134Z",
"url": "https://files.pythonhosted.org/packages/59/11/45a69fb1169a25de9a0285db818d2ce6cd9e1b7652764b6c53c3d9ea0c74/deepqlearn-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f05d8645a9481e8f44c3fc1eedd3f80966e516dfd610f295dd399fb6aa1c5e91",
"md5": "5ae38e41a8d8b9b9fd48b4cc17bedbc9",
"sha256": "611f9c6cad55b42cb477331267c31365bc102b5783d76620b30e1eef826c7965"
},
"downloads": -1,
"filename": "deepqlearn-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "5ae38e41a8d8b9b9fd48b4cc17bedbc9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 3952,
"upload_time": "2025-08-14T10:15:42",
"upload_time_iso_8601": "2025-08-14T10:15:42.468293Z",
"url": "https://files.pythonhosted.org/packages/f0/5d/8645a9481e8f44c3fc1eedd3f80966e516dfd610f295dd399fb6aa1c5e91/deepqlearn-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-14 10:15:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yourusername",
"github_project": "deepqlearn",
"github_not_found": true,
"lcname": "deepqlearn"
}