• 大小: 14.31MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-26
  • 语言: 其他
  • 标签: DQN  RL  

资源简介

使用强化学习进行赛车的自动驾驶功能实现,具体使用DDPG算法

资源截图

代码片段和文件信息

import numpy as np
import math
from keras.initializations import normal identity
from keras.models import model_from_json
from keras.models import Sequential Model
from keras.engine.training import collect_trainable_weights
from keras.layers import Dense Flatten Input merge Lambda
from keras.optimizers import Adam
import tensorflow as tf
import keras.backend as K

HIDDEN1_UNITS = 300
HIDDEN2_UNITS = 600

class ActorNetwork(object):
    def __init__(self sess state_size action_size BATCH_SIZE TAU LEARNING_RATE):
        self.sess = sess
        self.BATCH_SIZE = BATCH_SIZE
        self.TAU = TAU
        self.LEARNING_RATE = LEARNING_RATE

        K.set_session(sess)

        #Now create the model
        self.model  self.weights self.state = self.create_actor_network(state_size action_size)   
        self.target_model self.target_weights self.target_state = self.create_actor_network(state_size action_size) 
        self.action_gradient = tf.placeholder(tf.float32[None action_size])
        self.params_grad = tf.gradients(self.model.output self.weights -self.action_gradient)
        grads = zip(self.params_grad self.weights)
        self.optimize = tf.train.AdamOptimizer(LEARNING_RATE).apply_gradients(grads)
        self.sess.run(tf.initialize_all_variables())

    def train(self states action_grads):
        self.sess.run(self.optimize feed_dict={
            self.state: states
            self.action_gradient: action_grads
        })

    def target_train(self):
        actor_weights = self.model.get_weights()
        actor_target_weights = self.target_model.get_weights()
        for i in xrange(len(actor_weights)):
            actor_target_weights[i] = self.TAU * actor_weights[i] + (1 - self.TAU)* actor_target_weights[i]
        self.target_model.set_weights(actor_target_weights)

    def create_actor_network(self state_sizeaction_dim):
        print(“Now we build the model“)
        S = Input(shape=[state_size])   
        h0 = Dense(HIDDEN1_UNITS activation=‘relu‘)(S)
        h1 = Dense(HIDDEN2_UNITS activation=‘relu‘)(h0)
        Steering = Dense(1activation=‘tanh‘init=lambda shape name: normal(shape scale=1e-4 name=name))(h1)  
        Acceleration = Dense(1activation=‘sigmoid‘init=lambda shape name: normal(shape scale=1e-4 name=name))(h1)   
        Brake = Dense(1activation=‘sigmoid‘init=lambda shape name: normal(shape scale=1e-4 name=name))(h1) 
        V = merge([SteeringAccelerationBrake]mode=‘concat‘)          
        model = Model(input=Soutput=V)
        return model model.trainable_weights S


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-10-11 14:25  DDPG-Keras-Torcs-master\
     文件        2606  2016-10-11 14:25  DDPG-Keras-Torcs-master\ActorNetwork.py
     文件        2438  2016-10-11 14:25  DDPG-Keras-Torcs-master\CriticNetwork.py
     文件         159  2016-10-11 14:25  DDPG-Keras-Torcs-master\OU.py
     文件         614  2016-10-11 14:25  DDPG-Keras-Torcs-master\README.md
     文件        1119  2016-10-11 14:25  DDPG-Keras-Torcs-master\ReplayBuffer.py
     文件      779336  2016-10-11 14:25  DDPG-Keras-Torcs-master\actormodel.h5
     文件        2682  2016-10-11 14:25  DDPG-Keras-Torcs-master\actormodel.json
     文件         206  2016-10-11 14:25  DDPG-Keras-Torcs-master\autostart.sh
     文件     2232192  2016-10-11 14:25  DDPG-Keras-Torcs-master\criticmodel.h5
     文件        2916  2016-10-11 14:25  DDPG-Keras-Torcs-master\criticmodel.json
     文件        5962  2016-10-11 14:25  DDPG-Keras-Torcs-master\ddpg.py
     文件    12208354  2016-10-11 14:25  DDPG-Keras-Torcs-master\fast.gif
     文件       11140  2016-10-11 14:25  DDPG-Keras-Torcs-master\gym_torcs.py
     文件       23823  2016-10-11 14:25  DDPG-Keras-Torcs-master\snakeoil3_gym.py

评论

共有 条评论