tf的常见用法

BEGIN:

import tensorflow as tf

 

1、tf.constant:创建一个常数张量,传入list或者数值或字符串来填充
  
tf.constant([1,5,6,3,4,7,8,9])
  ###输出:
    <tf.Tensor: id=7, shape=(8,), dtype=int32, numpy=array([1, 5, 6, 3, 4, 7, 8, 9])>
    tensor = tf.constant(-1.0, shape=[2, 3])
  
print(tensor)
  ###输出:

    tf.Tensor(
    [[-1. -1. -1.]
    [-1. -1. -1.]], shape=(2, 3), dtype=float32)

import tensorflow as tf
mss = tf.constant("Welcom to tensorflow!\n")
with tf.Session() as sess:
  print(sess.run(mss).decode())

  ###输出:  

Welcom to tensorflow!

 

2、tf.nn.conv2d:创在TensorFlow中使用tf.nn.conv2d实现卷积操作
  tf.nn.conv2d(
      input,
      filter,
      strides,
      padding,
      use_cudnn_on_gpu=True,
      data_format='NHWC',
      dilations=[1, 1, 1, 1],
      name=None
  )
input:输入图像,具有[batch,in_height,in_width,in_channels]这样的4维shape,分别是图片数量、图片高度、图片宽度、图片通道数(灰度图为1,彩图为3),数据
类型为float32或float64。
filter:CNN中的卷积核,shape是[filter_height,filter_width,in_channels,out_channels]:滤波器高度、宽度、图像通道数、滤波器个数,数据类型和input相同。
padding:定义元素边框和元素内容之间的空间,只能是‘SAME’(边缘填充)或者‘VALID’(边缘不填充)。

3、tf.zeros:创建一个全零矩阵
  
tf.zeros([2,3],'int32')
  ###输出:

    <tf.Tensor: id=15, shape=(2, 3), dtype=int32, numpy=
    array([[0, 0, 0],
    [0, 0, 0]])>

4、tf.truncated_normal:从截断的正态分布中输出随机值。
生成的值服从具有指定平均值和标准偏差的正态分布,如果生成的值大于平均值2个标准偏差的值则丢弃重新选择。
在正态分布的曲线中:
  横轴区间(μ-σ,μ+σ)内的面积为68.268949%。
  横轴区间(μ-2σ,μ+2σ)内的面积为95.449974%。
  横轴区间(μ-3σ,μ+3σ)内的面积为99.730020%。
X落在(μ-3σ,μ+3σ)以外的概率小于千分之三,在实际问题中常认为相应的事件是不会发生的,基本上可以把区间(μ-3σ,μ+3σ)看作是随机变量X实际可能的取值区间,这称
之为正态分布的“3σ”原则。
在tf.truncated_normal中如果x的取值在区间(μ-2σ,μ+2σ)之外则重新进行选择。这样保证了生成的值都在均值附近。 

  tf.truncated_normal(
      shape,
      mean=0.0,
      sttdev=1.0,
      dtype=tf.float32,
      seed=None,
      name=None
  )
shape:一维张量,输出张量
mean:正态分布的均值
stddev:正态分布的标准差
dtype:输出的类型
seed:一个整数,当设置之后,每次生成的随机数都一样
name:操作的名字

举个栗子:
import tensorflow as tf
c = tf.truncated_normal(shape=[3, 3], mean=0, stddev=1)

with tf.Session() as sess:
    print(sess.run(c))

运行结果:

 

 

5、tf.random_normal:从正态分布中输出随机值
  tf.random_normal(
      shape,
      mean=0.0,
      sttdev=1.0,
      dtype=tf.float32,
      seed=None,
      name=None
  )
shape:一维张量,输出张量
mean:正态分布的均值
stddev:正态分布的标准差
dtype:输出的类型
seed:一个整数,当设置之后,每次生成的随机数都一样
name:操作的名字
例如:
import tensorflow as tf
a = tf.Variable(tf.random_normal([2,2],seed=1))
b = tf.Variable(tf.truncated_normal([2,2],seed=2))
init = tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(init)
  print('\n','a:')
  print(sess.run(a))
  print('\n','b:')
  print(sess.run(b))

输出

指定seed之后,a的值不变,b的值也不变。(即多次运行的结果是一样的)
全0矩阵:tf.zeros([2,3],int32)
全1矩阵:tf.ones([2,3],int32)
全为指定数字矩阵:tf.fill([2,3],9)
给定常量:tf.constant
矩阵对应位置相乘:*
矩阵变量:tf.Variable
矩阵乘法:tf.matmul
均匀分布:tf.random_uniform
Gamma分布:tf.random_gamma
限制张量值得范围:tf.clip_by_value(y, 1e-10, 1.0)
END.





posted @ 2020-11-12 14:32  Gangpei  阅读(509)  评论(0编辑  收藏  举报