SVD矩阵分解

目录

一、SVD矩阵分解

二、图片压缩


一、SVD矩阵分解

上篇内容 LLM微调和Lora 介绍了矩阵分解,通过两个低秩矩阵就能还原大量的信息。其实矩阵不止能分解成两个,还可以分成三个。这里来介绍一个SVD的工具。

用代码来说明一下:

python 复制代码
import numpy as np
from scipy.linalg import svd

A= np.array([[1, 2],
             [1, 1],
             [0, 0]])

p, s, q = svd(A, full_matrices=False)

print('P=', p)
print('S=', s)
print('Q=', q)

输出:

左边的矩阵是P,右边的矩阵是Q。S则表示对角阵 ,代表特征大小,从左到右依次减小

案例中仅有两个特征值,可以用两个特征值来还原所有的信息(上面的A公式)。如果矩阵很大,有很多个特征值,只需选择前面几个特征值就可以还原大部分信息。比如下面这个矩阵,特征值个数为2,计算方法如下:

二、图片压缩

LLM微调和Lora 上篇文章中提到用 2%的参数还原出矩阵,那么我们可以想想是不是可以用更少的信息还原出图片的内容呢?也可以说如何压缩图片?比如微信的图片打开,如果点下载原图会更清晰,但是不下载原图也能看清楚。

卷积神经网络(CNN)这篇文章中讲了图片可以处理成矩阵。如下:随便找一张图片,处理成矩阵A,并作svd分解:

python 复制代码
image = Image.open(os.path.join(os.getcwd(), '123.bmp')).convert('L')
A = np.array(image)
# 显示原图像
plt.imshow(A, cmap=plt.cm.gray, interpolation='nearest')
plt.show()
# 对图像矩阵A进行奇异值分解,得到 p, s, q
p, s, q = svd(A, full_matrices=False)
print("A 的维度:", A.shape)
print(len(s))

输出:

特征值有777个,但是我只选其中一部分来还原图片:

python 复制代码
# 取前k个特征,对图像进行还原
def get_image_feature(s, k):
	# 对于S,只保留前K个特征值
	s_temp = np.zeros(s.shape[0])
	s_temp[0:k] = s[0:k]
	s = s_temp * np.identity(s.shape[0])

	# 用新的s_temp,以及p,q重构A
	temp = np.dot(p, s)
	temp = np.dot(temp, q)
	plt.imshow(temp, cmap=plt.cm.gray, interpolation='nearest')
	plt.show()
	print(A - temp)
    
# 取前k个特征,对图像进行还原
get_image_feature(s, 5)
get_image_feature(s, 50)
get_image_feature(s, 200)
get_image_feature(s, 500)

输出:

大家对比看下,感觉50个特征值时图片已经很清晰了,200个特征值时和原图的差距就很小了。

(864 * 50 + 50 + 50 * 777) /(864 * 777)约等于12%,即用12%的信息就还原出图片内容了。

相关推荐
烟锁池塘柳01 小时前
【Agent】如何从大模型构建真正的 Agent?以 Claude Code 为例,理解能构建智能体的真正的 Harness 工程
人工智能·agent
qq_199886871 小时前
第6板块 第2节 CUDA运行时API与驱动API 核心笔记
c++·人工智能·gpu算力
m0_734571761 小时前
深入理解人工智能 最核心的算法模块
人工智能
烈风逍遥1 小时前
第六篇:RAG 知识库构建与检索全链路
前端·人工智能·后端
花椒技术1 小时前
Agent 沙箱怎么接入生产?花椒的选型、持久化与执行协议实践
人工智能·后端·agent
Liaiyang661 小时前
空圈容错视角下的无人机全链路审计:从理论框架到耦合式检验
人工智能·pytorch·python·深度学习·系统架构·自动驾驶·无人机
liuchangng1 小时前
Jev 模型研究:从生成式大模型到决策式模型——System One、RLCD 校准与采用边界
java·javascript·人工智能·python·深度学习
GPU实战笔记1 小时前
本地跑不动 llama.cpp,临时租云 GPU 怎么搭?从启动服务到环境复用
java·服务器·网络·人工智能·深度学习·llama
Seoyoneh1 小时前
智能客服意图识别实战:深度学习与规则引擎融合架构与落地实践
人工智能·信息与通信·通信