1、tf.clip_by_value()函数
import tensorflow as tf
# 默认会话
sess = tf.InteractiveSession()
# 定义一个list,填入一些数据
a = [1.0,2.0,3.1,4.3,5.6,2.4,6.7,1e-6,1e-7,0]
# 使用tf.clip_by_value函数进行处理,并返回处理过的tensor
# clip_by_value(t, clip_value_min, clip_value_max,name=None)
# t:待处理的tensor,或是一个list等
# clip_value_min:需要过滤的最小值,若t中存在比该值还小的值,一律换成clip_value_min
# clip_value_max:需要过滤的最大值,若t中存在比该值还大的值,一律换成clip_value_max
# name:名称
a = tf.clip_by_value(a,1e-5,5.0)
print(a.eval())
程序运行结果:(由于某些原因,计算结果会有一定的误差)
[ 1.00000000e+00 2.00000000e+00 3.09999990e+00 4.30000019e+00
5.00000000e+00 2.40000010e+00 5.00000000e+00 9.99999975e-06
9.99999975e-06 9.99999975e-06]
2、tf.log()函数
import tensorflow as tf
# 默认会话
sess = tf.InteractiveSession()
# 以自然底数e为底求log
# log(x, name=None)
# x:待处理的数据,可以是一个数字,或是一个list,一个tensor
# name:名称
# tf.log处理数字
a = tf.log(3.2)
print(a.eval())
# 定义一个list。注意:这里1e3中的e表示的是底数为10,即1e3 = 1000
b = [1.2,3.5,1.0,33.0,4.5,1e3]
# 处理并输出
print(tf.log(b).eval())
结果如下:
1.16315
[ 0.18232159 1.25276303 0. 3.49650764 1.50407743 6.90775537]
3、tf.random_normal()函数
此函数用于生成一个满足正态分布的随机矩阵。
import tensorflow as tf
# 默认会话
sess = tf.InteractiveSession()
# 定义一个4*4大小的满足正态分布的随机数矩阵的tensor
# random_normal(shape,mean=0.0,stddev=1.0,dtype=dtypes.float32,seed=None,name=None)
# shape:需要使用的矩阵的大小,
# mean:定义该正态分布的均值,默认为0.0
# stddev:定义该正态分布的标准差,默认为1.0
# dtype:定义该正态函数需要返回的数据类型,默认为dtypes.float32
# seed:随机数种子
# name:名称
a = tf.random_normal(shape=[4,4],mean=0.0,stddev=1.0,dtype=tf.float32)
# 初始化全局变量,这里初始化变量a
# 注意:上面的代码只是定义了一个正态分布的tensor,并没有对其进行初始化操作。
tf.global_variables_initializer().run()
# 输出结果
print(a.eval())
结果如下:(因为是随机数,结果可能会不同)
[[ 1.16927314 -4.32263422 1.51416755 0.54710573]
[ 0.9023155 -0.54921377 2.54586959 1.3882997 ]
[ 0.03705916 -1.51378703 -0.11003169 0.54481208]
[ 2.49299335 -0.3481389 0.35201314 -0.01697667]]
4、tf.truncated_normal()函数
此函数生成一个满足正态分布的随机矩阵,但是若随机出来的值偏离平均值超过2个标准差,那么这个数将会被重新随机。
import tensorflow as tf
# 默认会话
sess = tf.InteractiveSession()
# 定义一个4*4大小的满足正态分布的随机数矩阵的tensor,
# 若随机出来的值偏离平均值超过2个标准差,这个数将会被重新随机。
# truncated_normal(shape,mean=0.0,stddev=1.0,dtype=dtypes.float32,
# seed=None,name=None)
# shape:需要使用的矩阵的大小
# mean:定义该正态分布的均值,默认为0.0
# stddev:定义该正态分布的标准差,默认为1.0
# dtype:定义该正态函数需要返回的数据类型,默认为dtypes.float32
# seed:随机数种子
# name:名称
a = tf.truncated_normal(shape=[4,4],mean=0.0,stddev=1.0,dtype=tf.float32)
# 初始化全局变量,这里初始化变量a
# 注意:上面的代码只是定义了一个正态分布的tensor,并没有对其进行初始化操作。
tf.global_variables_initializer().run()
# 输出结果
print(a.eval())
结果如下:(因为是随机数,运行结果或有不同)
[[ 0.58962458 -1.22099793 -0.59211946 0.74239469]
[-0.36040574 0.07556695 -0.17711069 0.58110112]
[ 0.30555129 -1.07891178 0.58693099 -0.64367592]
[-0.31201413 0.62419111 -0.03405878 -0.37147731]]
5、tf.random_uniform()函数
生成的值遵循“[minval,maxval)”范围内的均匀分布。 下限“minval”包含在范围内,而上限“maxval”被排除。
对于浮点数,默认范围是[0,1)
。 对于int,至少必须明确指定maxval
。
在整数的情况下,随机整数稍微有偏差,除非’maxval - minval`是两个精确的幂。 对于“maxval - minval”的值,偏差小于输出范围(“2^32”或“2^64”)的偏差。
import tensorflow as tf
# 默认会话
sess = tf.InteractiveSession()
# 定义一个4*4大小的满足平均分布的随机数矩阵tensor
# random_uniform(shape,minval=0,maxval=None,dtype=dtypes.float32,seed=None,name=None)
# shape:需要使用的矩阵的大小,
# minval:定义该平均分布的所使用的最小值,默认为0
# maxval:定义该平均分布的所使用的最大值,默认为None
# dtype:定义该平均分布需要返回的数据类型,默认为dtypes.float32
# seed:随机数种子
# name:名称
a = tf.random_uniform(shape=[4,4],minval=-1.0,maxval=3.0,dtype=tf.float32)
# 初始化全局变量,这里初始化变量a
# 注意:上面的代码只是定义了一个平均分布的tensor,并没有对其进行初始化操作。
tf.global_variables_initializer().run()
# 输出结果
print(a.eval())
结果如下:(因为是随机数,结果或有不同)
[[ 1.33845615 -0.14620924 2.13644695 2.05494165]
[ 0.65009499 1.14196253 -0.95955133 2.88642359]
[ 1.80061817 0.49589825 2.1307044 0.98014498]
[ 1.03237772 -0.87565374 2.63588428 1.8114686 ]]
6、tf.zeros()和tf.ones()函数
import tensorflow as tf
# 默认会话
sess = tf.InteractiveSession()
# 返回一个指定大小矩阵的全为0的tensor
# zeros(shape, dtype=dtypes.float32, name=None)
# shape :需要使用的矩阵的大小
# dtype :需要使用的数据的类型,默认为dtype.float32
# name :名称
a = tf.zeros(shape=[4,4],dtype=tf.float32)
# 返回一个指定大小矩阵的全为1的tensor
# ones(shape, dtype=dtypes.float32, name=None)
# shape :需要使用的矩阵的大小
# dtype :需要使用的数据的类型,默认为dtype.float32
# name :名称
b = tf.ones(shape=[4,4],dtype=tf.float32)
# 初始化全局变量
tf.global_variables_initializer().run()
# 输出a
print("a矩阵如下:\n",a.eval())
# 输出b
print("b矩阵如下:\n",b.eval())
结果如下:
a矩阵如下:
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
b矩阵如下:
[[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]]
tf.zeros()和tf.ones()更多的时候用来对变量进行初始化,如:
import tensorflow as tf
# 默认会话
sess = tf.InteractiveSession()
# 返回一个指定大小矩阵的全为0的tensor变量a
a = tf.Variable(tf.zeros(shape=[5,5],dtype=tf.float32))
# 初始化全局变量
tf.global_variables_initializer().run()
# 输出a
print("变量a矩阵如下:\n",a.eval())
结果如下:
变量a矩阵如下:
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]
上面所说的各种分布函数也可以对变量进行初始化,在此不再赘述。
7、tf.fill()函数
此函数创建并返回一个指定维度的矩阵的tensor,并填充指定的数值。
import tensorflow as tf
# 默认会话
sess = tf.InteractiveSession()
# 返回一个指定大小矩阵的全为0的tensor变量a
# fill(dims, value, name=None)
# dims:指定生成的矩阵的维度
# value:指定生成的矩阵的数值
# name:名称
a = tf.fill(dims=[3,4],value=9.0)
b = tf.fill(dims=[3,4,5],value=8)
# 初始化全局变量
tf.global_variables_initializer().run()
# 输出a
print("a矩阵如下:\n",a.eval())
# 输出b
print("b矩阵如下:\n",b.eval())
结果如下:
a矩阵如下:
[[ 9. 9. 9. 9.]
[ 9. 9. 9. 9.]
[ 9. 9. 9. 9.]]
b矩阵如下:
[[[8 8 8 8 8]
[8 8 8 8 8]
[8 8 8 8 8]
[8 8 8 8 8]]
[[8 8 8 8 8]
[8 8 8 8 8]
[8 8 8 8 8]
[8 8 8 8 8]]
[[8 8 8 8 8]
[8 8 8 8 8]
[8 8 8 8 8]
[8 8 8 8 8]]]
8、tf.constant()函数
此函数创建一个常量tensor。这个常量可以使数字,字符串,list等数据类型。
import tensorflow as tf
# 默认会话
sess = tf.InteractiveSession()
# constant(value, dtype=None, shape=None, name="Const", verify_shape=False)
#
# 结果tensor使用`dtype`类型的值填充,由参数`value`和(可选)`shape`指定(见下面的例子)。
#
# 参数`value`可以是一个常量值,也可以是'dtype'类型的值列表。 如果“value”是一个list,则list的长度必须小于或等于“shape”参数(如果指定)隐含的元素数。 在列表长度小于“shape”指定的元素数量的情况下,列表中的最后一个元素将用于填充剩余的条目。
#
# 参数`shape`是可选的。 如果存在,它指定所得张量的尺寸。 如果不存在,则使用“value”的形状。
#
# 如果没有指定参数`dtype`,那么从`value`的类型推断出类型。
#
# value:输出类型为'dtype'的常量值(或list)。
# dtype:所得tensor的元素的类型。
# shape:所得tensor的可选尺寸。
# name:tensor的可选名称。
# verify_shape:启用验证值形状的布尔值
# 定义一个数值型常量
a = tf.constant(10.0 ,dtype=tf.float32)
# 定义一个string类型的字符串常量
b = tf.constant("hello world!",dtype=tf.string)
# 定义一个矩阵常量,参考shape参数
c = tf.constant([1.0,2.0,3.0,4.0,5.0,6.0], dtype=tf.float32,shape=[3,2])
# 定义一个填充的矩阵变量
d = tf.constant(-2.0,dtype=tf.float32, shape=[3,3])
tf.global_variables_initializer().run()
# 输出
print("a:\n",a.eval())
print("b:\n",b.eval())
print("c:\n",c.eval())
print("d:\n",d.eval())
结果如下:
a:
10.0
b:
b'hello world!'
c:
[[ 1. 2.]
[ 3. 4.]
[ 5. 6.]]
d:
[[-2. -2. -2.]
[-2. -2. -2.]
[-2. -2. -2.]]
9、tf.greater()函数
tf.greater:对两个tensor或是list依次对每个元素进行比较,并返回相应的bool值。与此类似的还有tf.greater_equal()、tf.less()、tf.less_equal()。
下面的实例以tf.greater()函数为例。
注意:比较的两个tensor的维度必须相同,否则会报错。
import tensorflow as tf
# 默认会话
sess = tf.InteractiveSession()
# 定义两个list
a = [1 ,2 ,43 ,3.4 ,5.3 ,324 ,4 ]
b = [2.2 ,34 ,3.4 ,4.4 ,3 ,56 ,8 ]
# greater(x, y, name=None)
# x: 一个 tensor或是一个list等。数据必须是以下的数据类型: `float32`, `float64`, `int32`, `int64`, `uint8`, `int16`, `int8`, `uint16`, `half`.
# y: 一个 tensor或是一个list等,需要和x保持同样的数据类型。
c = tf.greater(a,b)
# 输出
print(c.eval())
结果如下:
[False False True False True True False]