基于TensorFlow常量、序列以及随机值生成实例

yipeiwu_com5年前Python基础

TensorFlow 生成 常量、序列和随机值

生成常量

tf.constant()这种形式比较常见,除了这一种生成常量的方式之外,像Numpy一样,TensorFlow也提供了生成集中特殊的常量的函数:

tf.zeros(shape, dtype=tf.float32, name=None)

三个参数的意思显而易见,返回指定形状的全零张量

tf.zeros_like(tensor, dtype=None, name=None, optimizer=True) 与函数的名字一致,传入一个张量,最后返回一个张量,与传入的张量拥有一样的形状和数据类型,也可以自己传入dtype指定数据类型

tf.ones() 和tf.ones_like()与之前的函数对应一致

tf.fill(shape, value, name=None) 返回填满指定输入的数值的张量,例如:

tf.fill([2,3],9)

返回的张量就是:

[[9 9 9]
 [9 9 9]]

生成序列

tf.linspace(start, stop, num, name=None)

函数名称与Numpy中序列的函数一样,只是参数部分进行了简化,前两个参数分别指定了开始和结束的值,num指定了要生成的数量,最后则是名称,例如:

a = tf.linspace(1.0, 10.0, 10, name='lin1')

输出:

[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
tf.range(start, limit, delta, dtype=None, name=None)

例如:

a = tf.range(1, 5, 1)

输出:

[1 2 3 4]

随机张量

随机值在TensorFlow中很重要,很多情况下的初始值往往会随机值,常用的随机值生成函数如下:

生成均匀分布的随机张量

# 调用格式
random_uniform(
  shape,
  minval=0,
  maxval=None,  # 最大值以及最小值
  dtype=tf.float32,
  seed=None,   # 指定种子
  name=None
)
# 例如
a = tf.random_uniform([2,3], minval=1.0, maxval=5.0, dtype=tf.float32)
# 输出
[[4.458698 4.091486 4.3704953]
 [3.893827 2.7951822 2.2381153]]

生成服从正态分布的随机张量

# 调用格式
random_normal(
  shape,
  mean=0.0,   # 均值
  stddev=1.0,  # 标准差
  dtype=tf.float32,
  seed=None,
  name=None
)
a = tf.random_normal([2,3], mean=3.0, stddev=1.0, dtype=tf.float32)
[[3.65199  1.879906 2.1775374]
 [1.6041888 1.503772 2.704612 ]]

生成服从截断正态分布的随机张量

# 调用格式
tf.truncated_normal(
  shape,
  mean=0.0,
  stddev=1.0,
  dtype=tf.float32,
  seed=None,
  name=None
)

[[4.477414 2.9767075 2.377511 ]
 [2.7083392 4.2639837 2.497882 ]]

这个函数与正态分布的函数使用时一样的,只是增加了 “截断” 也就是限制每个元素的取值,如果其平均值大于 2 个标准差的值将被丢弃并重新选择 。

以上这篇基于TensorFlow常量、序列以及随机值生成实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python遍历文件夹和读写文件的实现代码

Python遍历文件夹和读写文件的实现代码

需 求 分 析 1、读取指定目录下的所有文件 2、读取指定文件,输出文件内容 3、创建一个文件并保存到指定目录 实 现 过 程   Python写代码简洁高效,实现以上功能仅用了40行...

在OpenCV里实现条码区域识别的方法示例

在OpenCV里实现条码区域识别的方法示例

在我们识别条码的过程里,首先要找到条码所在的区域,那么怎么样来找到这个条码的区域呢?如果仔细地观察条码,会发现条码有一个特性,就是水平的梯度和垂值的梯度会不一样,如果进行相减,会发现差值...

eclipse创建python项目步骤详解

eclipse创建python项目步骤详解

eclipse安装Python插件之后,主要是为了方便Python代码就可以再Eclipse进行代码脚本,使用Eclipse开发Python脚本,主要写代码会有提示功能,提高写代码效率,...

巧用python和libnmapd,提取Nmap扫描结果

每当我进行内网渗透面对大量主机和服务时,我总是习惯使用自动化的方式从 nmap 扫描结果中提取信息。这样有利于自动化检测不同类型的服务,例如对 web 服务进行路径爆破,测试 SSL/T...

python对list中的每个元素进行某种操作的方法

如下所示: ''' 对列表中的每个元素进行某种操作 ''' def add(c): return c**2 l = [1,2,3] d1 = map(add,l) print d...