TensorFlow教程——常用函数解析

以下函数均返回一个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分布样本。

伽马分布密度函数:

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 tf

a = tf.random_normal(shape=(5, 5))

tf.InteractiveSession()
print a.eval()

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手撕机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值