深度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算法。祝您学习愉快!🎉