深度Q学习(Deep Q-Network,简称DQN)是一种结合了深度学习和Q学习的强化学习算法。以下是一个简单的DQN代码示例,用于演示如何实现一个基本的DQN模型。
环境准备
在开始之前,请确保您已经安装了以下库:
- TensorFlow
- Keras
- Gym
您可以使用以下命令安装这些库:
pip install tensorflow keras gym
代码示例
以下是一个使用TensorFlow和Keras实现的DQN代码示例:
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
from gym import make
# 创建环境
env = make('CartPole-v0')
# 定义DQN模型
model = Sequential()
model.add(Dense(24, input_dim=4, activation='relu'))
model.add(Dense(24, activation='relu'))
model.add(Dense(2, activation='linear'))
# 编译模型
model.compile(loss='mse', optimizer=Adam(lr=0.001))
# 训练模型
episodes = 1000
for episode in range(episodes):
state = env.reset()
done = False
while not done:
action = model.predict(state)
next_state, reward, done, _ = env.step(np.argmax(action))
target = reward
if done:
target = reward
else:
target = reward + 0.95 * np.amax(model.predict(next_state)[0])
target_f = model.predict(state)
target_f[0][np.argmax(action)] = target
model.fit(state, target_f, epochs=1, verbose=0)
state = next_state
# 保存模型
model.save('dqn_cartpole.h5')
# 关闭环境
env.close()
扩展阅读
如果您想了解更多关于DQN的信息,可以阅读以下文章:
希望这个示例能帮助您更好地理解DQN算法。祝您学习愉快!🎉