Policy-based 强化学习中的几种采样方法

1.tf.random.categorical()

tf.random.categorical(tf.math.log([[0.5,0.5]]), 5)
Out[26]: <tf.Tensor: id=2523670, shape=(1, 5), dtype=int64, numpy=array([[0, 0, 1, 0, 1]], dtype=int64)>

前一个参数是概率取log,后一个是采样次数,返回的是选中的动作位置,比如这里0对应输入概率矩阵[[0.5, 0.5]]中的第一个,1对应第二个

 

2.np.random.choice(a, size=None, replace=True, p=None)

 
表示从a中随机选取size个数
replace =True表示放回,vice versa
p表示每个元素被抽取的概率,如果没有指定,a中所有元素被选取的概率是相等的。
 
由以上,a和p中的元素是存在一一对应的关系的,a填入单独数字n时,默认取值范围为[0, n)的整数
np.random.choice([1,2,3,4,5], 3, p=[0.1, 0, 0.3, 0.6, 0])
Out[30]: array([4, 1, 4])

 

posted @ 2020-02-24 09:38  Z_Agent  阅读(658)  评论(0编辑  收藏  举报