强化学习简易库

rlsimple的Python项目详细描述


#旨在简化强化学习。
它可以做到以下几点:
-简化神经网络的构造
-不用人工就可以自动构造阴影神经网络。
-简化梯度函数的构造
-提供一个简单的界面o不同的游戏环境,例如openai gym、flappybird。




```
python dqn/dqn.py
```
在这个例子中,我实现了dqn[2]算法,并对flappybird游戏运行它。


def初始(self、session、state-size、action-size):
hidden1size=200
hidden2 size=200

self.session=session

self.w1=self.weight(shape=[state-size,hidden1size])
self.b1=self.bias(shape=[hidde size,hidden1size])。n1size])
self.w2=self.weight_变量(shape=[hidden1size,hidden2 size])
self.b2=self.bias_变量(shape=[hidden2 size])
self.w3=self.weight_变量(shape=[hidden2 size,action_size])
self.b3=self.bias_变量(shape=[action_size])

self.inputstates=tf.placeholder("float",shape=[无,状态大小])
self.h1=tf.nn.relu(tf.matmul(self.inputstates,self.w1)+self.b1)
self.h2=tf.nn.relu(tf.matmul(self.h1,self.w2)+self.b2)
self.out=tf.matmul(self.h2,self.w3)+self.b3



self.qgradient=tf.placeholder(tf.float32,[无,动作大小])


self.gradient=tf.gradients(self.out,[self.w1,self.b1,self.w2,self.w3,self.b3],-self.qgradient)
zipped=zip(self.gradient,[self.w1,self.b1,self.w2,self.b2,self.w3,self.b3])
self.apply=tf.train.adamoptimizer(1e-6)。应用梯度(压缩)


ema=tf.train.exponentialMovingAverage(0.999)
self.target\u update=ema.apply([self.w1,self.b1,self.w2,self.b2,self.w3,self.b3])
self.target\u net=[var的ema.average(var)在[self.w1,self.b1,self.w2,self.b2,self.w3,self.b3]]
self.target_inputstates=tf.placeholder("float",shape=[none,state_size])
self.target_h1=tf.nn.relu(tf.matmul(self.target_inputstates,self.target_net[0])+self.target_net[1])
self.target_h2=tf.nn中。relu(tf.matmul(self.target_H1,self.target_Net[2])+self.target_Net[3])
self.target_Predict=tf.matmul(self.target_H2,self.target_Net[4])+self.target_Net[5]

```````
et,状态大小,操作大小,隐藏状态大小:
nn.\uu init(self,session,hasshadownet)
_大小])
对于范围内的i(numOfHiddenLayers-1):重复(numOfHiddenLayers-1)次
h1=self.buildlinearReuluWire(h1,[隐藏状态大小,隐藏状态大小])
out=self.buildlinearWire(h1,[隐藏状态大小,操作大小])
self.setOutLayer(out)
```
简化神经网络的构造
我们的想法是根据权重的形状自动为您定义权重和偏差变量(偏差的形状由权重的最后一个维度决定)。

原始神经网络。然而,构建影子网络并不容易:(1)需要使用tf.train.exponentialMovingAverage API来计算平滑的权重/偏差变量,(2)需要使用这些变量重建与原始网络具有相同结构的网络。我们的图书馆通过简单地移除它来减轻这个负担。你需要做的就是把nn的hashhadownet参数设为true。我们将自动为您处理其余所有问题。

请记住指定输出层:
```
self.setOutlayer(out)
````

初始状态(self):
raise notimplementederror("应该实现了这个,返回r,s,t")
def步骤(self,action,state=none):
raise notimplementederror("应该实现了这个")
类openaigameengine(gameengine):

类flappybirdgame引擎(游戏引擎):

```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用JNA创建同一库的多个实例?   java在将Graphql查询作为JSON字符串传递时收到意外的令牌错误   OAuth2 oltu的java问题   java桌面应用程序使用的好的嵌入式数据库是什么?   java Firebase数据库高级查询选项   java正在使磁盘上的EhCache元素过期   java 安卓还原处于backstack中的片段的实例状态   XMemcached中的java异步集   java TimescaleDB是否使用与Postgresql完全相同的JDBC驱动程序?   java从网站c读取信息#   检查java Android中的字符串是否只包含数字和空格   c#如何向web服务发送特殊字符?   grails无法调用需要java的方法。lang.类参数?   java我在组合框中调用的方法不会运行所有代码,它只运行部分代码   java发送带有标头的HTTP GET请求