TensorFlow2.0学习二之基础

TensorFlow2.0学习二之基础


首先,导入TensorFlow

import tensorflow as tf

TensorFlow 使用 张量 (Tensor)作为数据的基本单位。TensorFlow 的张量在概念上等同于多维数组,我们可以使用它来描述数学中的标量(0 维数组)、向量(1 维数组)、矩阵(2 维数组)等各种量。

# 定义一个随机数(标量)
random_float = tf.random.uniform(shape=())

# 定义一个有2个元素的零向量
zero_vector = tf.zeros(shape=(2))

# 定义两个2×2的常量矩阵
A = tf.constant([[1., 2.], [3., 4.]])
B = tf.constant([[5., 6.], [7., 8.]])

张量的重要属性是其形状、类型和值。可以通过张量的 shape 、 dtype 属性和 numpy() 方法获得。例如:

# 查看矩阵A的形状、类型和值
print(A.shape)      # 输出(2, 2),即矩阵的长和宽均为2
print(A.dtype)      # 输出<dtype: 'float32'>
print(A.numpy())    # 输出[[1. 2.]
                    #      [3. 4.]]

矩阵操作:加(add)称(matmul)

C = tf.add(A, B)    # 计算矩阵A和B的和
D = tf.matmul(A, B) # 计算矩阵A和B的乘积

在这里插入图片描述
自动求导机制

在机器学习中,我们经常需要计算函数的导数。TensorFlow 提供了强大的 自动求导机制 来计算导数。以下代码展示了如何使用 tf.GradientTape() 计算函数 y(x) = x^2 在 x = 3 时的导数:

import tensorflow as tf

x = tf.Variable(initial_value=3.)     # 初始化一个变量(Variable)
with tf.GradientTape() as tape:   # tf.GradientTape()是一个自动求导的记录器
                                  # 在 tf.GradientTape() 的上下文内,所有计算步骤都会被记录以用于求导
    y = tf.square(x)              # square()操作代表对输入张量的每个元素求平方,不改变张量的形状
y_grad = tape.gradient(y, x)        # 计算y关于x的导数
print([y, y_grad])

结果:y=9. y_grad=6.(y在x=3时的倒数)
在这里插入图片描述多元函数求偏导数
在机器学习中,更加常见的是对多元函数求偏导数,以及对向量或矩阵的求导。这些对于 TensorFlow 也不在话下。以下代码展示了如何使用 tf.GradientTape() 计算函数 L ( w , b ) = ∣ ∣ X w + b − y ∣ ∣ 2 L(w,b)=||Xw+b-y||^{2} L(w,b)=Xw+by2 w = ( 1 , 2 ) T , b = 1 w=(1,2)^{T},b=1 w=(1,2)T,b=1 时,分别对w, b的偏导数。其中
在这里插入图片描述

X = tf.constant([[1., 2.], [3., 4.]])
y = tf.constant([[1.], [2.]])
w = tf.Variable(initial_value=[[1.], [2.]])
b = tf.Variable(initial_value=1.)
with tf.GradientTape() as tape:
    L = 0.5 * tf.reduce_sum(tf.square(tf.matmul(X, w) + b - y))
w_grad, b_grad = tape.gradient(L, [w, b])        # 计算L(w, b)关于w, b的偏导数
print([L.numpy(), w_grad.numpy(), b_grad.numpy()])

tf.reduce_sum() 操作代表对输入张量的所有元素求和,输出一个形状为空的纯量张量(可以通过 axis 参数来指定求和的维度,不指定则默认对所有元素求和)。TensorFlow 中有大量的张量操作 API,包括数学运算、张量形状操作(如 tf.reshape())、切片和连接(如 tf.concat())等多种类型。可以通过查阅官方的API文档来进一步了解。
在这里插入图片描述
从输出可见:
在这里插入图片描述

感谢简单粗暴TensorFlow2.0帮助我入门

猜你喜欢

转载自blog.csdn.net/qq_41754907/article/details/102632579