1.3 深度学习——点积&矩阵向量积&矩阵乘法&范数
点积不仅是一个基本的数学操作,还在许多领域(如物理、计算机科学、机器学习)中发挥着重要作用。通过以上代码示例,你可以更好地理解点积的计算及其应用。矩阵乘法用于将两个矩阵结合以产生新的矩阵,其计算依赖于矩阵的行列结构。范数用于衡量向量或矩阵的大小,常见的包括 L1 范数和 L2 范数。
点积(Dot Product)详细讲解
什么是点积?
点积是线性代数中的一个基本运算,用于计算两个向量之间的关系。给定两个向量 ( x ) 和 ( y ),它们的点积表示为:
这意味着你将两个向量中对应位置的元素相乘,然后将所有的乘积相加。
示例代码
以下是用 Python 和 NumPy 计算点积的代码示例:
import numpy as np
# 定义两个向量
x = np.array([0, 1, 2, 3]) # 向量 x
y = np.array([1, 1, 1, 1]) # 向量 y
# 计算点积
dot_product = np.dot(x, y)
# 输出结果
print("向量 x:", x)
print("向量 y:", y)
print("点积 x·y =", dot_product)
运行结果
当你运行这段代码时,输出结果会是:
向量 x: [0 1 2 3]
向量 y: [1 1 1 1]
点积 x·y = 6
使用点积的例子
加权平均的计算
假设我们有一个学生的考试成绩和每门课的权重,我们想计算加权平均成绩。
# 考试成绩
scores = np.array([90, 80, 70]) # 三门课程的成绩
# 权重
weights = np.array([0.5, 0.3, 0.2]) # 各课程的权重
# 计算加权平均
weighted_average = np.dot(scores, weights)
# 输出结果
print("加权平均成绩 =", weighted_average)
运行结果
运行这段代码时,输出结果会是:
加权平均成绩 = 83.0
角度计算的例子
点积还可以用来计算两个向量之间的夹角。如果我们将向量归一化(单位化),则点积的值等于这两个向量夹角的余弦。
# 定义两个向量
a = np.array([1, 0])
b = np.array([0, 1])
# 计算点积
dot_product = np.dot(a, b)
# 计算向量的长度
length_a = np.linalg.norm(a)
length_b = np.linalg.norm(b)
# 计算夹角的余弦
cosine_angle = dot_product / (length_a * length_b)
# 计算夹角(弧度)
angle_radians = np.arccos(cosine_angle)
# 输出结果
print("向量 a:", a)
print("向量 b:", b)
print("点积 a·b =", dot_product)
print("夹角(弧度) =", angle_radians)
print("夹角(度数) =", np.degrees(angle_radians))
运行结果
运行这段代码时,输出结果会是:
向量 a: [1 0]
向量 b: [0 1]
点积 a·b = 0
夹角(弧度) = 1.5707963267948966
夹角(度数) = 90.0
总结
点积不仅是一个基本的数学操作,还在许多领域(如物理、计算机科学、机器学习)中发挥着重要作用。通过以上代码示例,你可以更好地理解点积的计算及其应用。
矩阵乘法(Matrix Multiplication)
什么是矩阵乘法?
矩阵乘法是线性代数中的一种运算。给定两个矩阵 ( A ) 和 ( B ),它们的乘积 ( C = A \times B ) 的计算规则是:矩阵 ( A ) 的列数必须等于矩阵 ( B ) 的行数。
具体来说,若 ( A ) 是一个 ( m \times n ) 矩阵,( B ) 是一个 ( n \times p ) 矩阵,那么它们的乘积 ( C ) 是一个 ( m \times p ) 矩阵,且 ( C ) 中第 ( i ) 行第 ( j ) 列的元素是:
示例代码
以下是用 Python 和 NumPy 计算矩阵乘法的代码示例:
import numpy as np
# 定义两个矩阵
A = np.array([[1, 2],
[3, 4]])
B = np.array([[5, 6],
[7, 8]])
# 计算矩阵乘法
C = np.dot(A, B)
# 输出结果
print("矩阵 A:")
print(A)
print("矩阵 B:")
print(B)
print("矩阵乘积 C = A * B:")
print(C)
运行结果
当你运行这段代码时,输出结果会是:
矩阵 A:
[[1 2]
[3 4]]
矩阵 B:
[[5 6]
[7 8]]
矩阵乘积 C = A * B:
[[19 22]
[43 50]]
范数(Norm)
什么是范数?
范数是用来衡量向量或矩阵的大小或长度的一个数值。常用的范数有:
示例代码
以下是计算 L2 范数和 L1 范数的代码示例:
# 定义一个向量
x = np.array([3, 4])
# 计算 L2 范数
l2_norm = np.linalg.norm(x, 2)
# 计算 L1 范数
l1_norm = np.linalg.norm(x, 1)
# 输出结果
print("向量 x:", x)
print("L2 范数 =", l2_norm)
print("L1 范数 =", l1_norm)
运行结果
运行这段代码时,输出结果会是:
向量 x: [3 4]
L2 范数 = 5.0
L1 范数 = 7.0
总结
- 矩阵乘法用于将两个矩阵结合以产生新的矩阵,其计算依赖于矩阵的行列结构。
- 范数用于衡量向量或矩阵的大小,常见的包括 L1 范数和 L2 范数。
更多推荐
所有评论(0)