以下函数均返回一个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的Tensor
tf.ones(shape, dtype=dtypes.float32, name=None)
tf.ones_like(tensor, dtype=None, name=None, optimize=True) # 根据tensor的shape生成全1的Tensor
tf.range(start, limit=None, delta=1, dtype=None, name="range") # 范围[start, limit),步长delta
tf.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分布样本。
伽马分布密度函数:
其中
Γ(α)
是伽马函数:
伽马函数是阶乘在实数域的拓展,它的来源可参考神奇的伽玛函数。
Γ(1)=∫+∞0e−udu=−e−u|+∞0=0
Γ(2)=∫+∞0ue−udu=−e−u|+∞0=1
Γ(3)=∫+∞0u2e−udu=−e−u|+∞0=2
Γ(3.5)=∫+∞0u2.5e−udu≈3.32
对于正整数来说, Γ(n)=(n−1)! 。
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 tf
a = tf.random_normal(shape=(5, 5))
tf.InteractiveSession()
print a.eval()
以上笔记部分摘抄自:
http://blog.csdn.net/u012969412/article/details/62044184