当前位置:网站首页>SVD奇异值分解——矩阵压缩
SVD奇异值分解——矩阵压缩
2022-07-21 09:12:00 【WL725】
基本概念
- SVD
奇异值分解。将矩阵进行压缩。大幅度减少内存消耗,提高运行速度。
应用
数据降维、推荐算法、自然语言处理
算法核心
A = U ∑ V t A=U\sum V^t A=U∑Vt
对于任意矩阵A,我们总能够将其分解位三个矩阵 U 、 ∑ 、 V t U、\sum、V^t U、∑、Vt
- U为酉矩阵
- ∑ \sum ∑为对角阵
- V t V^t Vt为酉矩阵
酉矩阵
- 满足 A T = A − 1 A^T=A^{-1} AT=A−1
分解过程
将原始矩阵分解为三个矩阵
推导过程
- A = U ∑ V t A=U\sum V^t A=U∑Vt
- A t = ( U ∑ V t ) T = V ( U ∑ ) T = V ∑ t U T A^t=(U\sum V^t)^T=V(U\sum)^T=V\sum^tU^T At=(U∑Vt)T=V(U∑)T=V∑tUT
结论
- A A T = U ∑ V t V ∑ T U T = U ∑ 2 U T AA^T=U\sum V^tV\sum^TU^T=U\sum^2U^T AAT=U∑VtV∑TUT=U∑2UT
- A T A = V ∑ T U T U ∑ V t = V ∑ 2 V T A^TA=V\sum^TU^TU\sum V^t=V\sum^2V^T ATA=V∑TUTU∑Vt=V∑2VT
实例数据
代码演示
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
def pic_compress(k, pic_array):
global u, sigma, vt, sig, new_pic
u, sigma, vt = np.linalg.svd(pic_array)
sig = np.eye(k) * sigma[: k]
new_pic = np.dot(np.dot(u[:, :k], sig), vt[:k, :]) # 还原图像
size = u.shape[0] * k + sig.shape[0] * sig.shape[1] + k * vt.shape[1] # 压缩后大小
return new_pic, size
filename = "timg.jpg"
ori_img = np.array(Image.open(filename))
new_img, size = pic_compress(100, ori_img)
print("original size:" + str(ori_img.shape[0] * ori_img.shape[1]))
print("compress size:" + str(size))
fig, ax = plt.subplots(1, 2)
ax[0].imshow(ori_img, cmap='gray')
ax[0].set_title("before compress")
ax[1].imshow(new_img, cmap='gray')
ax[1].set_title("after compress")
plt.show()
效果展示
original size:1365760
compress size:244700
边栏推荐
猜你喜欢
Pix2Seq:谷歌大脑提出 CV 任务统一接口!
Sentinel容错规则持久化
sql中substr与substring函数用法
玫瑰
HCIP第八天笔记
Musk uploaded his brain to the cloud? Zhou Hongyi: we have to use human brain security guards to kill poison
左耳朵耗子:云原生时代的开发者应具备的5大能力
3625. 幂次方
Neural network plus attention mechanism, accuracy does not rise but fall?
Feign详解,日志配置+契约设置+超时时间+自定义拦截器
随机推荐
开发期质量 节选自《闻缺陷则喜》(此书可免费下载)
Multiple ways of sorting tablewidgets
[深度学习学习笔记]注意力机制-Attentional mechanism
Pix2Seq:谷歌大脑提出 CV 任务统一接口!
Database generates HTML document
LeetCode 146:LRU 缓存
Tencent techo hub landed in Fuzhou 723 for the first time in 2022 to discuss industrial digitalization with developers!
m在ISE平台下使用verilog开发基于FPGA的GMSK调制器
基于三维GIS的场数据模型研究与实践
架构内容 节选自《闻缺陷则喜》(此书可免费下载)
rose
The fathers of programming languages are too bored to retire and choose to return to the workplace
字节跳动确认将自研芯片:仅供内部使用;马斯克:我已将大脑上传云端;Go 语言产品负责人离职|极客头条...
C getting started series (XXVI) -- assemblies and namespaces
Hcip seventh day notes
js中批量修改对象中的属性值
工作笔记——使用Jest时遇到的一些问题
QT大杂烩(总)
OSPF综合实验
玫瑰