深度学习第二阶段之线性代数②

本文详细介绍了矩阵和张量的基本运算,包括加减、点乘、叉乘、转置、逆和违逆等核心操作,并通过实例展示了如何使用PyTorch和NumPy进行这些运算,同时解释了特殊矩阵的性质。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

矩阵和张量的基本运算

矩阵的运算

在这里插入图片描述

  1. 加减:形状相同,对应位置相加相减(矩阵必须同形)
  2. 数加/数减:矩阵的每个位置跟一个数相加,相减
  3. 点乘:要求两个矩阵必须同样形状大小,矩阵各个对应元素相乘
  4. 数乘:矩阵的每个位置跟一个数相乘
  5. 叉乘:前一个矩阵的列需要和后一个矩阵的行一致,不满足乘法交换律(AB≠BA)
import torch
a = torch.tensor([[1,2],[3,4],[5,6]])
b = torch.tensor([[5,6],[7,8]])
print(a*a) #点乘
print(a@b) #叉乘

张量的运算

前几项和矩阵相同
张量的叉乘: [N,X,Y] @[N,Y,C] = [N,X,C] 注意看形状

转置

矩阵的转置

import torch
a = torch.tensor([[1,2],[3,4],[5,6]],dtype=torch.float32)
print(a)
print(a.T)
tensor([[1., 2.],
        [3., 4.],
        [5., 6.]])
tensor([[1., 3., 5.],
        [2., 4., 6.]])

张量的转置
N H W C 转成 N C H W

c = torch.randn((1,5,6,3))
print(c.shape)
c_trans = c.permute(0,3,1,2)
print(c_trans.shape)
torch.Size([1, 5, 6, 3])
torch.Size([1, 3, 5, 6])

逆和违逆

1. 逆的运算相当于矩阵的除法运算
2. 只有非奇异方阵才有逆
3. 违逆是逆的推广,去除了方阵的限制

当x是方阵时:
y = w*x
w = y/x = y * x − 1 x^{-1} x1 此时 x − 1 x^{-1} x1 就是x的逆

当x不是方阵时:
y = wx
w = y/x = y * x T x^{T} xT / x * x T x^{T} xT (此时x * x T x^{T} xT就是方阵了)
= ( x ∗ x T ) − 1 ({x * x^{T})}^{-1} (xxT)1 * x T x^{T} xT y(最小二乘法)

( x ∗ x T ) − 1 ({x * x^{T})}^{-1} (xxT)1 * x T x^{T} xT就是x的违逆

最小二乘法公式

在这里插入图片描述

import numpy as np
x = np.array([[1],[3],[6]])
y = x*4

inv_x = np.linalg.inv((x.T).dot(x))
print(inv_x)
print(inv_x @ x.T @y)
[[0.02173913]]
[[4.]]

其他特殊矩阵

方阵
斜对角阵(主对角线之外的元素皆为0的矩阵)
单位矩阵 (对角线上是1,其他都为零)
对称矩阵(与对角线对称)
零矩阵
稀疏矩阵(大部分是0,少部分有之值)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值