TensorFlow教程——常用函数解析

来源:互联网 发布:海安东华软件招聘 编辑:程序博客网 时间:2024/06/10 00:45

以下函数均返回一个Tensor对象,类似矩阵数据,包括单个值,向量,多维矩阵。

基本的两个创建常量Tensor的函数

tf.constant(value, dtype=None, shape=None, name="Const", verify_shape=False)

根据value和shape来创建一个常量Tensor。value可以是一个数,也可以是一个list。 如果是一个数,那么这个常量中所有值的按该数来赋值; 如果是list,那么len(value)一定要小于等于shape展开后的长度,赋值时,先将value中的值逐个存入,不够的部分,则全部存入value的最后一个值。若verify_shape为True,则value的数量跟shape的不一致时会报错。

tf.fill(dims, value, name=None)

跟tf.constant()类似,不过这里的value只能是一个数

类似Numpy的函数

tf.zeros(shape, dtype=dtypes.float32, name=None)tf. zeros_like(tensor, dtype=None, name=None, optimize=True) # 根据tensor的shape生成全0的Tensortf.ones(shape, dtype=dtypes.float32, name=None)tf.ones_like(tensor, dtype=None, name=None, optimize=True) # 根据tensor的shape生成全1的Tensortf.range(start, limit=None, delta=1, dtype=None, name="range") # 范围[start, limit),步长deltatf.lin_space(start, stop, num, name=None) # 范围[start, stop],num个数

随机生成常量

1. 均匀分布

tf.random_uniform(shape, minval=0, maxval=None, dtype=dtypes.float32, seed=None, name=None)

产生均匀分布样本,范围为[minval, maxval]。

2. 正态分布

tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=dtypes.float32, seed=None, name=None)

随机产生正态分布样本,均值mean,标准差stddev,默认生成标准正态分布。

3. 截断正态分布

tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=dtypes.float32, seed=None, name=None)

随机产生截断正态分布样本,跟上一函数差不多,不过只保留[mean-2*stddev, mean+2*stddev]范围内的样本 ,不在此范围的重新生成,默认[-2, 2]。

4. 伽马分布

tf.random_gamma(shape, alpha, beta=None, dtype=dtypes.float32, seed=None, name=None)

随机产生Gamma分布样本。

伽马分布密度函数:

g(t)=λαΓ(α)tα1eλt,t0

其中Γ(α)是伽马函数:

Γ(α)=+0uα1eudu,α>0

伽马函数是阶乘在实数域的拓展,它的来源可参考神奇的伽玛函数。

Γ(1)=+0eudu=eu|+0=0

Γ(2)=+0ueudu=eu|+0=1

Γ(3)=+0u2eudu=eu|+0=2

Γ(3.5)=+0u2.5eudu3.32

对于正整数来说,Γ(n)=(n1)!

Python求微积分可以用sympy库。

伽马分布密度函数有两个参数:αλ,其中α表示事件发生的次数,λ表示平均每次事件发生的时间间隔。例如我们对地震发生的时间间隔进行建模,则α=1λ=10的伽马分布密度函数,刻画的是平均10小时发生一次地震的某地区的发震时间间隔的概率分布,比如函数图像在[0,5]上的面积表示5小时发生一次地震的概率。

伽马分布密度函数图像分析:当α1时,函数图像都是悬崖状曲线(单调递减),当α>1时,函数图像都是山峰状曲线(凸函数);λ的变化不会改变函数图像的形状,而是随着λ的增大,函数图像向右“挤压”。因此,α又叫做形状参数(Shape Parameter),λ又叫做尺度参数(Scale Parameter)

5. 多项式分布

tf.multinomial(logits, num_samples, seed=None, name=None)

模拟多项式分布。logits是二维矩阵,每一行代表结果概率分布。num_samples代表独立实验次数。例如抛一枚不均匀的骰子10次,每个面的概率为[1/12, 1/12, 1/12, 3/12, 3/12, 3/12]。
tf.multinomial([[1.0, 1.0, 1.0, 3.0, 3.0, 3.0]], 10) ,可能得到: [[4 4 4 2 4 0 2 3 5 4]],5个5点,2个3点,1个1点,1个4点,1个6点。

随机洗牌

tf.random_shuffle(value, seed=None, name=None)

Randomly shuffles a tensor along its first dimension. 想象成洗牌,如value=[[1, 2], [3, 4], [5, 6]],可能返回[[3, 4], [5 6], [1, 2]]

随机裁剪

tf.random_crop(value, size, seed=None, name=None)

Randomly crops a tensor to a given size. 随机裁剪,想象随机裁剪一幅图像,因此需要value.shape>=size。如tf.random_crop([[1, 2, 3], [4, 5, 6], [7, 8, 9]], size=(2, 2)),可能返回[[5, 6], [8,9]]

运行

查看常量的值需要InteractiveSession:

import tensorflow as tfa = tf.random_normal(shape=(5, 5))tf.InteractiveSession()print a.eval()

以上笔记部分摘抄自:
http://blog.csdn.net/u012969412/article/details/62044184

原创粉丝点击