TensorFlow2.0常用函数

内容来源视频,视频地址:here

2019年3月 tensorflow 2.0 测试版发布
2019年10月 tensorflow 2.0 正式发布
2020年1月 tensorflow2.1 发布

  • 创建一个张量,tf.constant(张量内容, dtype=数据类型[可选])

  • numpy数据装换成tensor数据类型,tf.convert_to_tensor(数据名, dtype=数据类型[可选])

  • 创建全为0的张量,tf.zeros(维度);

  • 创建全为1的张量,tf.ones(维度);

  • 创建全为指定值的张量,tf.fill(维度, 指定值);

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

  • 生成截断式正态分布的随机数,tf.random.truncated_normal(维度, mean=均值, stddev=标准差);
    随机数的取值在 ( μ − 2 θ , μ + 2 θ ) (\mu - 2\theta, \mu + 2\theta) (μ2θ,μ+2θ)之间,之外会重新生成;

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

  • tensor数据类型转换:tf.cast(张量名, dtype=数据类型);

  • 计算张量维度上的元素最小值:tf.reduce_min(张量名, axis=轴)axix=0表示列上,1表示行上;
    类似的还有:tf.reduce_maxtf.reduce_sumtf.reduce_mean等;

  • tf.Variable(初始值)将变量标记为“可训练”,被标记的变量会在反向传播中记录梯度信息。
    eg. w = tf.Variable(tf.random.normal([2, 2], mean=0, stddev=1)),也就是正太分布随机初始化我们定义维度的可训练参数w:
    在这里插入图片描述

  • 四则运算:tf.add(张量1, 张量2)tf.subtract(张量1, 张量2)tf.multiply(张量1, 张量2)tf.divide(张量1, 张量2),分别对应加减乘除;维度相同的张量才可进行四则运算

  • tf.square(张量)tf.pow(张量, n次方)tf.sqrt(张量),分别对应平方、次方和开方;

  • 使用tf.matmul(矩阵1, 矩阵2)来进行矩阵乘法;

  • 输入特征与对应标签的配对,使用tf.data.Dataset.from_tensor_slices((输入特征, 标签))NumpyTensor格式的都可以使用该语句读入数据。

  • 函数对参数的求导运算,使用with结构记录计算过程,gradient求出张量的梯度。

with tf.GradientTape() as tape:
    若干个计算过程
grad = tape.gradient(函数, 对谁求导)

案例:

with tf.GradientTape() as tape:
    w = tf.Variable(tf.constant(3.0))
    loss = tf.pow(w, 2)
grad = tape.gradient(loss, w)
print(grad) # 6.0

因为目标函数是 y = w 2 y=w^2 y=w2, 而标记的求导变量是w,且初始化为常数3,那么结果就是6

  • 独热编码表示,使用tf.one_hot(带转换数据, depth=几分类),
    eg.
datas = tf.constant([2, 0, 1])
classes = 3 # 待分类类别
output = tf.one_hot(datas, depth=classes)
print(output)

在这里插入图片描述

  • softmax即:tf.nn.softmax(x)
  • 参数自更新函数,tensor.assign_sub(tensor要自减的内容)
w = tf.Variable(4)
w.assign_sub(2)
print(w) # 2

类似的,还有assign_add

  • 返回张量在指定轴上的最大值下标,tf.argmax(tensor, axis=轴)
a = tf.constant([[1, 2, 3],[4, 5, 6]])
print(tf.argmax(a, axis=0))
print(tf.argmax(a, axis=1))

在这里插入图片描述

  • 条件语句,tf.where(条件语句, 真返回A, 假返回B)
    在这里插入图片描述
  • 将两个数据按照垂直方向叠加,np.vstack(数组1, 数组2)
import numpy as np
a = np.array([1, 2, 3])
b = np.array([2, 3, 4])
c = np.vstack((a, b))
print(c)

在这里插入图片描述

  • 网格坐标点生成,np.mgrid[],.ravel(), np.c_[]
x, y = np.mgrid[1:3:1, 2:4:0.5] # 起始值:结束值:步长
print(x)
print(y)

在这里插入图片描述

x, y = np.mgrid[1:3:1, 2:4:0.5] # 起始值:结束值:步长
grid = np.c_[x.ravel(), y.ravel()]
print(grid)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_26460841/article/details/113108480