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