欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TensorFlow(三)常用函数

程序员文章站 2022-05-30 12:29:33
...

创建一个一行两列的矩阵

matrix1 = tf.constant([[3., 3.]])
  • 1

创建一个两行一列的矩阵

matrix2 = tf.constant([[2.],[2.]])
  • 1

矩阵相乘

tf.matmul(matrix1, matrix2)
  • 1

启动默认图.

sess = tf.Session()
result = sess.run(product)
### 任务完成, 关闭会话.
sess.close()
  • 1
  • 2
  • 3
  • 4

创建一个变量列表,(变量维护图的中间状态)

tf.Variable([1.0, 2.0])
  • 1

创建一个常量列表

tf.constant([3.0, 3.0])
  • 1

使用初始化器 initializer op 的 run() 方法初始化 ‘x’

x.initializer.run()
  • 1

增加一个减法 sub op, 从 ‘x’ 减去 ‘a’. 运行减法 op, 输出结果

sub = tf.sub(x, a)
  • 1

计算state 和 one 的值

new_value = tf.add(state, one)
  • 1

将 new_value 的值 赋给 state (state=new_value)

update = tf.assign(state, new_value)
  • 1

mul = multiply 是将input1和input2 做乘法运算,并输出为 output

ouput = tf.multiply(input1, input2)
  • 1

生成随机数,数据格式是 float 32 的形式

x_data = np.random.rand(100).astype(np.float32)
  • 1
  • 2

定义Wx_plus_b, 即神经网络未**的值(预测的值)。其中,tf.matmul()是矩阵的乘法。

    Wx_plus_b = tf.matmul(inputs,Weights)
  • 1

如果定义 Variable, 就一定要 initialize **变量 (此时没有**只有 sess.run 才会**)

init = tf.global_variables_initializer()   
  • 1

建立一个优化器, 减少神将网络的误差 GradientDescentOptimizer 是最基础的优化器, 0.5 为学习效率(0-1),

optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
  • 1
  • 2

TensorFlow中维护的集合列表
在一个计算图中,可以通过集合(collection)来管理不同类别的资源。比如通过 tf.add_to_collection 函数可以将资源加入一个 或多个集合中,然后通过 tf.get_collection 获取一个集合里面的所有资源(如张量,变量,或者运行TensorFlow程序所需的队列资源等等)

集合名称 集合内容 使用场景
tf.GraphKeys.VARIABLES 所有变量 持久化TensorFlow模型
tf.GraphKeys.TRAINABLE_VARIABLES 可学习的变量(一般指神经网络中的参数) 模型训练、生成模型可视化内容
tf.GraphKeys.SUMMARIES 日志生成相关的张量 TensorFlow计算可视化
tf.GraphKeys.QUEUE_RUNNERS 处理输入的QueueRunner 输入处理
tf.GraphKeys.MOVING_AVERAGE_VARIABLES 所有计算了滑动平均值的变量 计算变量的滑动平均值
  1. TensorFlow中的所有变量都会被自动加入tf.GraphKeys.VARIABLES集合中,通过 tf.global_variables()函数可以拿到当前计算图上的所有变量。拿到计算图上的所有变量有助于持久化整个计算图的运行状态。
  2. 当构建机器学习模型时,比如神经网络,可以通过变量声明函数中的trainable参数来区分需要优化的参数(比如神经网络的参数)和其他参数(比如迭代的轮数,即超参数),若trainable = True,则此变量会被加入tf.GraphKeys.TRAINABLE_VARIABLES集合。然后通过 tf.trainable_variables函数便可得到所有需要优化的参数。TensorFlow中提供的优化算法会将tf.GraphKeys.TRAINABLE_VARIABLES集合中的变量作为 默认的优化对象。
  • 变量的类型是不可以改变的。
  • 变量的维度一般是不能改变的,除非设置参数validate_shape = False(很少去改变它)
TensorFlow中的tf.Variable函数随机数和常数的生成:
函数名 随机数分布 主要参数
tf.random_normal 正态分布 平均值、标准差、取值类型
tf.truncated_normal 满足正态分布的随机值,但若随机值偏离平均值超过2个标准差,则这个数会被重新随机 平均值、标准差、取值类型
tf.random_uniform 平均分布 最大、最小值、取值类型
tf.random_gamma Gramma分布 形状参数alpha、尺度参数beta、取值类型
函数名 功能 示例
tf.zeros 产生全0的数组 tf.zeros([2, 3],tf.int32)
tf.ones 产生全1的数组 tf.ones([2, 3],tf.int32)
tf.fill 产生一个全部为给定数组的数组 tf.fill([2,3], 9)
tf.constant 产生一个给定值的常量 tf.constant([2,3,4])
TensorFlow 中的tf.get_variable变量初始化函数
初始化函数 功能 主要参数
tf.constant_initializer 将变量初始化为给定常数 常数的取值
tf.random_normal_initializer 将变量初始化为满足正态分布的随机值 正态分布的均值和标准差
tf.truncated_normal_initializer 将变量初始化为满足正态分布的随机值,但若随机值偏离平均值超过2个标准差,则这个数会被重新随机 正态分布的均值和标准差
tf.random_uniform_initializer 将变量初始化为满足平均分布的随机值 最大、最小值
tf.uniform_unit_scaling_initializer 将变量初始化为满足平均分布但不影响输出数量级的随机值 factor(产生随机值时乘以的系数)
tf.zeros_initializer 将变量初始化为全0 变量维度
tf.ones_initializer 将变量初始化为全1 变量维度
  1. tf.clip_by_value函数将张量限定在一定的范围内:
sess = tf.InteractiveSession()

v = tf.constant([[1., 2., 3.], [4., 5., 6.]])
tf.clip_by_value(v, 2.5, 4.5).eval()  # 小于2.5的数值设为2.5,大于4.5的数值设为4.5
array([[ 2.5,  2.5,  3. ],
       [ 4. ,  4.5,  4.5]], dtype=float32)
  1. tf.log 对张量所有元素进行对数运算
tf.log(v).eval()
array([[ 0.        ,  0.69314718,  1.09861231],
       [ 1.38629436,  1.60943794,  1.79175949]], dtype=float32)
  1. tf.greater的输入是两个张量,此函数会比较这两个张量中的每一个元素,并返回比较结果;
    当输入维度不一致时会进行广播(broadcasting)
v1 = tf.constant([1., 2., 3., 4.])
v2 = tf.constant([4., 3., 2., 1.])
f = tf.greater(v1, v2)
f.eval()

Out[11]:
array([False, False,  True,  True], dtype=bool)
  1. tf.where 函数有三个参数:
    第一个选择条件根据,当选择条件为True时,会选择第二个参数中的值,否则使用第三个参数中的值:
tf.where(f, v1, v2).eval()
array([ 4.,  3.,  3.,  4.], dtype=float32)