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) 返回填满指定输入的数值的张量,例如:
1
|
tf.fill([ 2 , 3 ], 9 ) |
返回的张量就是:
1
2
|
[[ 9 9 9 ] [ 9 9 9 ]] |
生成序列
1
|
tf.linspace(start, stop, num, name = None ) |
函数名称与Numpy中序列的函数一样,只是参数部分进行了简化,前两个参数分别指定了开始和结束的值,num指定了要生成的数量,最后则是名称,例如:
1
|
a = tf.linspace( 1.0 , 10.0 , 10 , name = 'lin1' ) |
输出:
1
|
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ] |
1
|
tf. range (start, limit, delta, dtype = None , name = None ) |
例如:
1
|
a = tf. range ( 1 , 5 , 1 ) |
输出:
1
|
[ 1 2 3 4 ] |
随机张量
随机值在TensorFlow中很重要,很多情况下的初始值往往会随机值,常用的随机值生成函数如下:
生成均匀分布的随机张量
1
2
3
4
5
6
7
8
9
|
# 调用格式 random_uniform( shape, minval = 0 , maxval = None , # 最大值以及最小值 dtype = tf.float32, seed = None , # 指定种子 name = None ) |
1
2
|
# 例如 a = tf.random_uniform([ 2 , 3 ], minval = 1.0 , maxval = 5.0 , dtype = tf.float32) |
1
2
3
|
# 输出 [[ 4.458698 4.091486 4.3704953 ] [ 3.893827 2.7951822 2.2381153 ]] |
生成服从正态分布的随机张量
1
2
3
4
5
6
7
8
9
|
# 调用格式 random_normal( shape, mean = 0.0 , # 均值 stddev = 1.0 , # 标准差 dtype = tf.float32, seed = None , name = None ) |
1
|
a = tf.random_normal([ 2 , 3 ], mean = 3.0 , stddev = 1.0 , dtype = tf.float32) |
1
2
|
[[ 3.65199 1.879906 2.1775374 ] [ 1.6041888 1.503772 2.704612 ]] |
生成服从截断正态分布的随机张量
1
2
3
4
5
6
7
8
9
10
11
12
|
# 调用格式 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常量、序列以及随机值生成实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/sinat_34328764/article/details/83278102