- 博客(25)
- 收藏
- 关注
原创 莫烦python强化学习系列-Double DQN学习
DQN 的神经网络部分可以看成一个 最新的神经网络 + 老神经网络, 他们有相同的结构, 但内部的参数更新却有时差. 而它的 Q现实部分是这样的:因为我们的神经网络预测 Qmax 本来就有误差, 每次也向着最大误差的 Q现实 改进神经网络, 就是因为这个 Qmax 导致了 overestimate. 所以 Double DQN 的想法就是引入另一个神经网络来打消一些最大误差的影响. 而 ...
2019-01-08 10:23:48 1642
转载 莫烦python强化学习系列-DQN学习(代码)
import numpy as npimport pandas as pdimport tensorflow as tfnp.random.seed(1)tf.set_random_seed(1)# Deep Q Network off-policyclass DeepQNetwork: def __init__( self, ...
2018-12-29 11:35:56 7287 1
原创 莫烦python强化学习系列-DQN学习
传统的Q-learning,我们使用表格来存储每一个状态 state, 和在这个 state 下,每个行为 action 所拥有的 Q 值。传统的Q-learning不适用状态多的情况。 a1 a2 s1 Q(s1,a1) Q(s1,a2) s2 Q(s2,a1) Q(s2,a2) ...... ...... .......
2018-12-13 22:34:21 3678
原创 莫烦python强化学习系列--Sarsa-lambda学习
Sarsa 是一种单步更新法, 在环境中每走一步, 更新一次自己的行为准则, 我们可以在这样的 Sarsa 后面打一个括号, 说他是 Sarsa(0), 因为他等走完这一步以后直接更新行为准则. 如果延续这种想法, 走完这步, 再走一步, 然后再更新, 我们可以叫他 Sarsa(1). 同理, 如果等待回合完毕我们一次性再更新呢, 比如这回合我们走了 n 步, 那我们就叫 Sars...
2018-12-05 16:28:44 704
原创 莫烦强化学习:Sarsa代码学习
Q_Learning和Sarsa的算法如图所示:对比算法可知,Q_Learning在到达状态s`后,首先查询Q表,得到使该状态s`条件下Q值最大的动作a`,根据Q(s`, a`)计算Q现实,随后,通过Q现实和Q估计更新Q表在下一步执行过程中,该动作a`未必被选择Sarsa在到达状态s`后,根据贪心策略,选择动作a`,根据Q(s`, a`)计算Q现实,随后,通过Q现实和Q估计更...
2018-12-05 08:58:20 858
原创 在PTB数据上使用TensorFlow建立语言模型3
词汇表中所有单词的向量维度:[VOCAB,EMB_SIZE]每个batch中的输入维度input_data:[batch_size,num_steps]经tf.nn.embedding_lookup提取词向量后,输入维度input_embedding:[batch_size,num_steps,EMB_SIZE]在训练的每一个时刻,输入的维度[batch_size,EMB_SIZE],...
2018-12-03 21:35:11 220
原创 在PTB数据上使用TensorFlow建立语言模型2-PTB数据的batching方法
将整个文章看成一个长序列,分成batch_size个连续的子序列,每个子序列大小num_batches*num_step,batch中的每一个位置负责其中一个子序列。循环神经网络在处理完一个batch后,它的最终隐藏状态将复制到下一个batch中作为初始值。 其中,每个batch的建模示意图如下: batch之间的建模示意图如下 ...
2018-11-27 22:02:16 379
原创 在PTB数据上使用TensorFlow建立语言模型1-数据预处理
一、基础知识语言模型效果好坏的常用标准是复杂度(perplexity)。在一个测试集上得到的perplexity越低,说明建模效果越好。计算perplexity值得公式如下:在语言模型中,通常采用perplexity的对数表达形式:在数学上,log perplexity可看成真实分布与预测分布之间的交叉熵,交叉熵描述了两个概率之间的一种距离。 二、PTB数据集的预处理...
2018-11-25 22:07:41 276
原创 tf.where的使用方法
tf.where( condition, x=None, y=None, name=None )1、x=None, y=None时,condition是bool型值,True/False返回值,是condition中元素为True对应的索引2、condition, x, y 相同维度,condition是bool型值,True/False返回值是对应元素,condition中元素为...
2018-11-24 23:07:37 859 1
原创 tf.nn.softmax_cross_entropy_with_logits和tf.nn.sparse_softmax_cross_entropy_with_logits函数的使用
tensorflow里提供了两个方便计算交叉熵的函数import tensorflow as tf#使用tf.nn.sparse_softmax_cross_entropy_with_logits时,labels为类别号labels=tf.constant([2,0]) #labels的空间大小为3,样本为2和0predict_logits=tf.constant([[2.0,-1....
2018-11-22 22:51:44 368
原创 莫烦Q_Learning代码学习
在本节代码中,莫烦大神用Q_Learning算法实现一个探索者走迷宫的游戏,核心代码包括run_this.py和RL_brain.py.其中,run_this.py对应迭代更新部分。from maze_env import Mazefrom RL_brain import QLearningTabledef update(): for episode in range(100)...
2018-11-22 22:23:57 1491
原创 张量拼接函数tf.stack()与张量分解函数tf.unstack()
1、tf.stack(values, axis=0, name=’stack’)以指定的轴axis,将一个维度为R的张量数组转变成一个维度为R+1的张量。即将一组张量以指定的轴,提高一个维度。参数:values: 一个有相同形状与数据类型的张量数组。axis: 以轴axis为中心来转变的整数。默认是第一个维度即axis=0。支持负数。取值范围为[-(R+1), R+1)name: 这...
2018-11-21 22:20:51 859
原创 利用Bidirectional LSTM实现数据集MNIST的分类
双向循环神经网络(Bidirectional Recurrent Neural Networks,Bi-RNN)的核心是把一个普通的单向的RNN拆分成两个方向,一个随着时间序列正向的,一个逆着时间序列反向的。这样当前时间节点的输出就可以同时利用正向、反向两个方向的信息,而不像普通RNN需要等到后面时间节点才可以获取未来时间信息。这两个不同方向的RNN之间不会共用state,它们之间没...
2018-11-21 21:52:12 1067
原创 莫烦Q_Learning探路者代码学习
Q-Learning算法:拜读莫烦大神的代码,实现一个简单的小程序,实现一个探索者的游戏-o---T #T是宝藏的位置,o是探索者的位置在一个地点探索者都能作出两个行为left/right,具体代码如下:"""A simple example for Reinforcement Learning using table lookup Q-learning method.A...
2018-11-20 12:03:08 771
原创 word2vec代码详解(4)
# Step 5: Begin training.num_steps = 100001with tf.Session(graph=graph) as session: # We must initialize all variables before we use them. init.run() print('Initialized') average...
2018-11-19 21:38:19 414
原创 tf.nn.embedding_lookup的用法
word2vec中会用到tf.nn.embedding_lookup函数,下面介绍一下它的用法:tf.nn.embedding_lookup(tensor, id):tensor就是输入张量,id就是张量对应的索引函数用来返回一个张量里面索引对应的元素组成的张量。import tensorflow as tfimport numpy as npa=tf.Variable(np....
2018-11-18 22:54:26 182
原创 word2vec代码详解(3)
步骤四,我们可以建立和训练一个Skip-Gram模型了batch_size = 128embedding_size = 128 # Dimension of the embedding vector.单词的维度skip_window = 1 # How many words to consider left and right.num_skips = 2 # How many t...
2018-11-18 22:11:57 251
原创 word2vec代码详解(2)-创建字典、生成训练样本
第二步,创建字典,取频数最高的50000个单词,按照频数从高到低存到字典中,编号为1到50000,其它单词认定其为Unknow,编号为0# Step 2: Build the dictionary and replace rare words with UNK token.vocabulary_size = 50000def build_dataset(words, n_words):...
2018-11-17 23:17:04 1106
原创 word2vec代码详解(1)-文本数据下载
TensorFlow中word2vec_basic.py的具体代码可见:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/word2vec/word2vec_basic.py下面对其具体分析步骤1.1:实现文本数据的下载,使用urllib.request.urlretri...
2018-11-16 23:14:34 578
原创 Python中assert关键字的作用
assert+表达式,如果发生异常就说明表达式为假。可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常。语法:assert expression [, arguments]assert 2==7,'2!=7'输出:AssertionError: 2!=7...
2018-11-16 22:35:55 529
原创 numpy.ndarray如何使用
函数就是numpy的构造函数,我们可以使用这个函数创建一个ndarray对象。import numpy as npnp.ndarray(shape=(2,3), dtype=int, buffer=np.array([1,2,3,4,5,6,7]), order="C") 输出array([[1, 2, 3], [4, 5, 6]])其中,order:"C"为...
2018-11-16 22:23:23 827
原创 numpy库数组拼接函数concatenate
numpy.concatenate((a1,a2,...),axis=0)将数组a1、a2、......在axis轴上拼接,默认axis=0import numpy as npa1=np.array([[1,2,3],[3,4,5]]) #a1: 2*3a2=np.array([[1,1,1]]) #a2: 1*3 a=np.concatenate((a1,a2...
2018-11-14 21:52:53 366
原创 Python中星号的意义
1、定义函数参数时使用*、**def test(*args)*args表示把传进来的位置参数都装在元组args里面def test(*args): print(args[1])test(1,2,3)输出:2def test(**kwargs)**kwargs表示把传进来的位置参数都装在字典kwargs里面def test(**kwargs): p...
2018-11-14 21:29:55 1786
原创 使用pyinstaller打包Python3.项目生成exe文件
1、pyinstaller安装命令行输入 pip3 install pyinstaller2、直接在cmd命令行,进入需要打包的代码所在文件夹后,运行下面命令pyinstaller [opts] yourprogram.py可选的opts有: -F, –onefile 打包成一个exe文件。 -D, –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。 -c, –conso...
2018-03-16 23:59:22 266
原创 基于Python+Matplotlib+PyQt5的试验数据分析工具
安装 pip3 install PyQt5代码说明:1、classShowWindow(QWidget):QWidget是PyQt中非常重要的通用窗口类,是所有用户界面对象的基类,所有和用户界面相关的控件类都是继承自QWidger类。 2、def__init__(self): super(ShowWindow,self).__init__() self.i...
2018-03-16 23:36:50 4187 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人