文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
使用 Sklearn 线性回归重构图像
from sklearn.linear_model import Lasso
from sklearn.linear_model import Ridge
# 用 L2(岭)惩罚重建
rgr_ridge = Ridge(alpha=0.2)
rgr_ridge.fit(proj_operator, proj.ravel())
rec_l2 = rgr_ridge.coef_.reshape(l, l)
plt.imshow(rec_l2, cmap='gray')
# <matplotlib.image.AxesImage at 0x7efcd453d5c0>
18*128
# 2304
18 x 128 x 128 x 128
L1 范数产生稀疏性
单位球 在 L1 范数中是菱形。 它的极值是角:
类似的视角是看损失函数的轮廓:
是 L1 范数。 最小化 L1 范数会产生稀疏值。 对于矩阵,L1 范数等于最大绝对列范数。
是核范数,它是奇异值的 L1 范数。 试图最小化它会产生稀疏的奇异值 -> 低秩。
proj_operator.shape
# (2304, 16384)
# 使用 L1(Lasso)惩罚重建 α 的最佳值
# 使用 LassoCV 交叉验证来确定
rgr_lasso = Lasso(alpha=0.001)
rgr_lasso.fit(proj_operator, proj.ravel())
rec_l1 = rgr_lasso.coef_.reshape(l, l)
plt.imshow(rec_l1, cmap='gray')
# <matplotlib.image.AxesImage at 0x7efcd4919cf8>
这里的 L1 惩罚明显优于 L2 惩罚!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论