Tensorflow深度学习之六:基础函数简介(持续更新中)

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]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值