tensorflow2常用函数

TensorFlow学习笔记

Tensor 表示张量,是多维数组、多维列表,用阶表示张量的维数。

0 阶张量叫做标量,表示的是一个单独的数,如 123;

1 阶张量叫做向量,表示的是一个一维数组如[1,2,3];

2 阶张量叫做矩阵,表示的是一个二维数组。

TensorFlow中数据类型有tf.int32、 tf.float32、tf.float64、tf.bool、tf.string

创建张量的方法:

  1. tf.constant(张量内容,dtype=数据类型(可选))

shape 中数字为 2,表示一维张量里有 4 个元素。

  1. 将numpy的数据类型转换为Tensor数据类型

       tf.convert_to_tensor(数据名,dtype=数据类型(可选))

  1. 创建全0的张量  tf.zeros(维度)
  2. 创建全1的张量  tf.ones(维度)
  3. 创建全为指定值的张量  tf.fill(维度,指定值)

  1. 生成正态分布的随机数,默认均值为0,标准差为1
    • tf.random.normal(维度,mean=均值,stddev=标准差)
  2. 生成截断式正态分布的随机数
    • tf.random.truncated_normal(维度,mean=均值,stddev=标准差)  

生成截断式正态分布的随机数,能使生成的这些随机数更集中一些,如果随机生成数据的取值 在 (  mean - 2 * stddev, mean + 2 * stddev  ) 之外则重新进行生成,保证了生成值在均值附近

  1. 生成均匀分布的随机数
    • tf.random.uniform(维度,minval=最小值,maxval=最大值)

生成指定维度的均匀分布随机数,用 minval 给定随机数的最小值,用 maxval 给定随机数的最大值, 最小、最大值是前闭后开区间

其他常用函数:

  1. 强制tensor数据类型转换
    • tf.cast(张量名,dtype=数据类型)
  2. tensor元素计算
    • tf.reduce_min(张量名):最小
    • tf.reduce_max(张量名):最大
    • tf.reduce_sum(张量名):求和
    • tf.reduce_mean(张量名):均值
    • 利用 tf.add (张量 1,张量2)实现两个张量的对应元素相加;
    • 利用 tf.subtract (张量 1,张量 2)实现两个张量的对应元素相减;
    • 利用 tf.multiply (张量 1,张量 2)实现两个张量的对应元素相乘;
    • 利用 tf.divide (张量 1,张量 2)实现两个张量的对应元素相除。

注:只有维度相同的张量才可以做加减乘除四则运算

可用 tf.reduce_mean (张量名,axis=操作轴)计算张量沿着指定维度的平均值。求最大最小均值同理,对于一个二维张量,如果 axis=0 表示纵向操作,axis=1 表示横向操作。

  1. tensor数据运算
    • 平方 tf.square(张量名)
    • n次方 tf.pow(张量名, n)
    • 开方 tf.sqrt(张量名)

  1. tensor数据运算,matmul矩阵乘
    • tf.matmul(矩阵 1,矩阵 2)

  1. tf.argmax
    • 返回张量沿着指定维度最大值的索引
    • tf.argmax(张量名, axis=操作轴)

  1. tf.data.Dataset.from_tensor_slices((输入特征, 标签))
    • 该函数是dataset核心函数之一,它的作用是把给定的元组、列表和张量等数据进行特征切片。
    • 切片的范围是从最外层维度开始的。
    • 如果有多个特征进行组合,那么一次切片是把每个组合的最外维度的数据切开,分成一组一组的。
    • 切分传入张量的第一维度,生成输入特征/标签对,构建数据集,此函数对 Tensor 格式与 Numpy 格式均适用,其切分的是第一维度,表征数据集中数据的数量,之后切分 batch 等操作都以第一维为基础。

  1. Variable函数

tf.Variable()将变量标记为“可训练”,被标记的变量会在反向传播中记录梯度信息。神经网络训练中,常用该函数标记待训练参数。

tf.Varible(初始值)

  1. GradientTape函数

tf.GradientTape( )函数搭配 with 结构计算损失函数在某一张量处的梯度

  1. GradientTape函数  多层高阶导数
    1. watch(tensor)
    2. 作用:确保某个tensor被tape追踪

另外,默认情况下GradientTape的资源在调用gradient函数后就被释放,再次调用就无法计算了。

所以如果需要多次计算梯度,需要开启persistent=True属性,例如:

  1. One_hot函数 
    • tf.one_hot(待转换数据,depth=几分类)
  2. One_hot函数 

             tf.one_hot(indices, depth, on_value, off_value, axis)

    1. indices是一个列表,指定张量中独热向量的独热位置,或者说indeces是非负整数表示的标签列表。len(indices)就是分类的类别数。
    2. tf.one_hot返回的张量的阶数为indeces的阶数+1。
    3. 当indices的某个分量取-1时,即对应的向量没有独热值。
    4. depth是每个独热向量的维度
    5. on_value是独热值
    6. off_value是非独热值
    7. axis指定第几阶为depth维独热向量,默认为-1,即,指定张量的最后一维为独热向量

  1. tf.nn.softmax函数 
    • tf.nn.softmax(x)函数,使输出符合概率分布

  1. assign_sub函数 

赋值操作,更新参数的值并返回

调用assign_sub前,先用 tf.Variable定义变量w为可训练(可自更新).

w.assign_sub(w要自减的内容)

猜你喜欢

转载自blog.csdn.net/m0_57885354/article/details/126954182