实现 LoRA(Low-Rank Adaptation)的前向计算。
LoRA 的核心思想:冻结预训练权重 W(din×dout),新增两个低秩矩阵 A(din×r)和 B(r×dout),其中 r≪min(din,dout) 是秩。前向计算为:
y=xW+α⋅xAB其中 α 是缩放系数(通常取 α/r,本题直接给定 α)。
给定输入 X(n×din)、预训练权重 W、低秩矩阵 A,B 和缩放系数 α,计算 LoRA 的输出。
第一行包含四个整数 n,din,dout,r(1≤n≤16,1≤din,dout≤16,1≤r≤min(din,dout))和一个浮点数 α。
接下来 n 行,每行 din 个浮点数,表示输入 X。
接下来 din 行,每行 dout 个浮点数,表示预训练权重 W。
接下来 din 行,每行 r 个浮点数,表示低秩矩阵 A。
接下来 r 行,每行 dout 个浮点数,表示低秩矩阵 B。
输出 n 行,每行 dout 个浮点数,表示 LoRA 的输出,保留 4 位小数。
输入
2 3 2 1 0.5
1.0 0.0 1.0
0.0 1.0 0.0
1.0 0.0
0.0 1.0
1.0 0.0
1.0
0.0
1.0
1.0 1.0
输出
3.0000 1.0000
0.0000 1.0000
说明
X=[[1,0,1],[0,1,0]],W=[[1,0],[0,1],[1,0]]。原始路径 XW=[[2,0],[0,1]]。LoRA 增量:A=[[1],[0],[1]],B=[[1,1]],XAB=[[2,2],[0,0]],缩放后 0.5×[[2,2],[0,0]]=[[1,1],[0,0]]。最终 =[[2+1,0+1],[0+0,1+0]]=[[3,1],[0,1]]。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册