恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

TensorFlow Cookbook 实战:用 Cholesky 分解实现线性回归(Decomposition Method)

  • 首页
  • 资讯中心
  • /
  • TensorFlow Cookbook 实战:用 Cholesky 分解实现线性回归(Decomposition Method)

相关资讯

无状态应用迁移 Kubernetes 平滑落地实践:从容器化到灰度发布 2026/10/11 11:37:42
Linux基础操作指令实战:打通文件、进程与权限,掌握服务器运维核心 2026/10/11 11:32:42
Selenium驱动版本自动匹配:selenium_driver_updater实战指南 2026/10/11 11:32:42

最新资讯

Vibe Coding 实战:把 Claude Code 的 settings 改到 TaoToken 免费体验 AI 编程
架构深潜:无后端纯前端刷题系统 IELTS Atlas 的五层设计全解析
Claude Code实战:AI编程Agent如何像资深工程师一样完成复杂代码重构
微信数据库解析工具全解:定位、解密、导出与挖掘
红外航拍人车识别数据集构建与模型适配指南
别再把 OS 当作 AI 的计算机了!解构下一代声明式 Agent Infra

今日推荐

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

TensorFlow Cookbook 实战:用 Cholesky 分解实现线性回归(Decomposition Method)

发布时间:2026/10/11 11:37:42
TensorFlow Cookbook 实战:用 Cholesky 分解实现线性回归(Decomposition Method) 示例工程【免费下载链接】tensorflow_cookbookCode for Tensorflow Machine Learning Cookbook项目地址https://gitcode.com/gh_mirrors/te/tensorflow_cookbook点击查看免费下载导读本章节聚焦于《TensorFlow Machine Learning Cookbook》第 3 章Linear Regression中的第二种闭式求解方案——Cholesky 分解法利用tf.cholesky()将对称正定的法方程矩阵AᵀA分解为下三角矩阵与其转置之积再通过两次三角矩阵回代求出线性回归系数。读完本文你将掌握 Cholesky 分解求解线性回归的完整数学推导、TensorFlow 1.x 图模式下的逐步实现代码、与矩阵求逆方法的数值对比以及如何在 TensorFlow 2.x 中迁移对应 API。仓库中该配方的完整可运行代码位于 02_lin_reg_decomposition.py对应的交互式讲解见 02_lin_reg_decomposition.ipynb。一、为什么需要矩阵分解从法方程谈起对于 2D 线性回归A * x bA为设计矩阵x为待求参数矩阵b为目标值矩阵第 3 章第 1 篇配方 01_lin_reg_inverse.py 给出了经典的最小二乘闭式解(t(A) * A) * x t(A) * b x (t(A) * A)^(-1) * t(A) * b其中t(A)表示A的转置。这段闭式解的核心操作是显式计算矩阵(AᵀA)⁻¹的逆代码中对应tf.matrix_inverse(tA_A)。从数值计算的角度看显式求逆存在两个隐患计算量大直接求逆需要完整的高斯消元过程复杂度约为O(2n³/3)数值稳定性差当AᵀA接近奇异条件数很大时求逆结果对舍入误差极其敏感系数可能出现灾难性偏差。Cholesky 分解正是规避上述问题的经典手段。本配方第 3 章第 2 篇的目标就是用**分解Decomposition 回代Back-substitution**取代显式求逆得到同样的最小二乘解但更快、更稳。仓库第 3 章总览 03_Linear_Regression/readme.md 明确将前两篇归类为标准矩阵线性回归求解并指出它们与后续基于计算图的迭代式回归第 3 至 8 篇属于两类不同的实现思路。二、数学原理Cholesky 分解如何求出x2.1 分解条件对称正定矩阵Cholesky 分解适用于对称正定矩阵任一对称正定矩阵M都可以唯一分解为一个下三角矩阵L与其转置的乘积即M L * LL为L的转置。对于超定线性回归系统A本身是长方形矩阵行数 样本数列数 参数个数并不满足分解条件。但注意AᵀA天然是对称正定矩阵只要A列满秩因此配方分解的对象不是A而是AᵀAt(A) * A L * L2.2 两阶段求解将分解结果代入法方程AᵀA·x Aᵀb得到L * L * x t(A) * b由于L是下三角矩阵、L是上三角矩阵求解被拆成两次代价极低的三角矩阵回代前向代入forward substitution解L * y t(A) * b求出中间向量y回代求解backward substitution解L * x y最终得到参数x。完整求解步骤在配方说明文档中归纳为计算AᵀA的 Cholesky 分解使AᵀA L·L解L·y Aᵀb得y解L·x y得x。从代数上看最终结果x (L·L)⁻¹·Aᵀb (AᵀA)⁻¹·Aᵀb与矩阵求逆方法数学等价但全程没有显式构造任何逆矩阵。记法说明配套 Notebook02_lin_reg_decomposition.ipynb的数学推导采用了另一种约定将分解写作AᵀA Lᵀ·L并相应地先解Lᵀ·z Aᵀy、再解L·x z。两种记法只是把 L 的名字赋予了下三角或上三角因子最终结果完全一致。以代码为准TensorFlow 的tf.cholesky()返回的是下三角因子L满足AᵀA L·Lᵀ因此代码中的求解顺序是先乘L、后乘Lᵀ。2.3 复杂度优势Cholesky 分解本身的复杂度约为O(n³/3)加上两次回代O(n²)相比直接高斯消元求逆O(2n³/3)大约节省一半的计算量更重要的是分解过程避免了求逆放大的舍入误差数值上更稳定。这正是本配方在工程实践中的核心价值。三、数据准备构造设计矩阵与第 1 篇配方保持一致Notebook 中注明使用与先前配方相同的数据生成方法代码先用 NumPy 生成 100 个带噪声的线性样本x_vals np.linspace(0, 10, 100) y_vals x_vals np.random.normal(0, 1, 100)其中x在[0, 10]区间均匀取 100 个点y x εε ~ N(0, 1)即真实模型为斜率 1、截距 0 的直线便于事后检验拟合结果。接着构造 2D 回归的设计矩阵A形状100 × 2x_vals_column np.transpose(np.matrix(x_vals)) # 第一列x 值 ones_column np.transpose(np.matrix(np.repeat(1, 100))) # 第二列全 1截距项 A np.column_stack((x_vals_column, ones_column)) b np.transpose(np.matrix(y_vals)) # 目标列向量设计矩阵第二列全 1 的作用是引入偏置项使得求解得到的两个参数分别对应斜率slope和截距y_intercept。最后将 NumPy 数组包装为 TensorFlow 常量张量纳入计算图A_tensor tf.constant(A) b_tensor tf.constant(b)对应源码见 02_lin_reg_decomposition.py。四、TensorFlow 实现分解 两次回代以下全部代码02_lin_reg_decomposition.py与前述数学步骤一一对应。第 1 步构造法方程矩阵并做 Cholesky 分解tA_A tf.matmul(tf.transpose(A_tensor), A_tensor) # Aᵀ·A100x2 与 2x100 相乘得 2x2 L tf.cholesky(tA_A) # 下三角因子 L满足 AᵀA L·Lᵀtf.cholesky()是 TensorFlow 对 LAPACKpotrf的封装直接返回下三角因子。注意这里的AᵀA是2×2小矩阵分解开销极小即使扩展到更多特征维度同一套 API 依然适用。第 2 步前向代入解L * y Aᵀ * btA_b tf.matmul(tf.transpose(A_tensor), b) # Aᵀ·b2x1 sol1 tf.matrix_solve(L, tA_b) # 解 L·y Aᵀ·b得 ytf.matrix_solve()求解线性方程组M·X RHS。当M是三角矩阵时TensorFlow 内部直接采用回代算法复杂度为O(n²)无需任何求逆操作。第 3 步回代求解解L * x ysol2 tf.matrix_solve(tf.transpose(L), sol1) # 解 Lᵀ·x y得最终参数 xtf.transpose(L)将下三角因子转置为上三角矩阵第二次tf.matrix_solve完成上三角回代。第 4 步会话求值solution_eval sess.run(sol2)在 TensorFlow 1.x 图模式下tf.Session()负责驱动整个计算图执行由于所有节点都是常量与确定运算sess.run(sol2)会一次性完成全部矩阵运算并返回2×1的参数向量。完整的图构建过程与求值环节见 02_lin_reg_decomposition.py。整套实现只需四类算子tf.matmul、tf.transpose、tf.cholesky、tf.matrix_solve没有任何训练循环或超参数。五、结果提取与可视化solution_eval中第一个元素是斜率、第二个是截距直接索引取值slope solution_eval[0][0] y_intercept solution_eval[1][0] print(slope: str(slope)) print(y_intercept: str(y_intercept))Notebook 中的真实运行输出为slope: 0.944118894701 y_intercept: 0.227194921431由于生成数据的真实关系是y x ε拟合斜率接近 1、截距接近 0验证了分解法求出的正是最小二乘解。随后代码按best_fit slope * x y_intercept逐点生成拟合直线并用 Matplotlib 将原始散点与红色拟合线绘制在同一张图上02_lin_reg_decomposition.py结果即文首配图——数据点沿直线紧密分布拟合线斜率与真实斜率基本一致。六、与矩阵求逆方法的对比第 1 篇配方的求逆版实现01_lin_reg_inverse.py核心代码如下tA_A tf.matmul(tf.transpose(A_tensor), A_tensor) tA_A_inv tf.matrix_inverse(tA_A) # 显式求逆 product tf.matmul(tA_A_inv, tf.transpose(A_tensor)) solution tf.matmul(product, b_tensor)与本篇分解版对照两者在数学结果上完全等价差异全在数值策略维度矩阵求逆法第 1 篇Cholesky 分解法本篇核心算子tf.matrix_inversetf.cholesky 两次tf.matrix_solve显式构造逆矩阵是否计算量约O(2n³/3)约O(n³/3)快约一倍数值稳定性条件数大时误差被放大三角回代误差累积更小适用前提方阵可逆AᵀA对称正定列满秩即可在特征维度n不大的情况下两者差别不明显当n增长、或AᵀA病态时分解法的优势会逐步显现。这也是线性代数求解库LAPACK、NumPynumpy.linalg.solve等默认不采用先求逆再相乘的根本原因。七、与后续迭代式回归的关系第 3 章从第 3 篇开始切换思路以 03_lin_reg_tensorflow_way.py 为代表改用计算图 梯度下降迭代逼近参数在该配方中模型为y A·x b损失为批量 L2 损失loss mean((y_target - model_output)²)通过GradientDescentOptimizer逐步优化。与闭式解的两篇配方相比本篇一次性算出全局最优参数无学习率、迭代次数等超参数也无需担心收敛问题迭代式方法则具备可扩展性能够处理大规模数据、引入正则化、切换到任意损失函数——第 3 章第 4 至 8 篇L1/L2 损失、Deming 回归、Lasso/Ridge、ElasticNet、逻辑回归正是沿着这条路线展开的。因此理解本篇的分解法相当于掌握了线性回归解析解的数值最优实现是理解后续所有数值迭代解的对比基准。八、运行环境与 API 迁移注意事项仓库根目录的 requirements.txt 将环境锁定为TensorFlow 1.15.0配合numpy1.14.5、matplotlib2.2.2等。本配方代码的图模式写法tf.Session()ops.reset_default_graph()依赖 1.x 默认关闭 Eager Execution 的语义属于典型的 TF 1.x 风格。在 TensorFlow 2.x 中相关 API 已迁移至tf.linalg命名空间功能完全对应TF 1.x本配方TF 2.x 等价 APItf.cholesky(tA_A)tf.linalg.cholesky(tA_A)tf.matrix_solve(L, b)tf.linalg.solve(L, b)tf.matrix_inverse(M)tf.linalg.inv(M)或直接tf.linalg.solve迁移时还需注意TF 2.x 默认 Eager 模式tf.constant张量可直接参与 NumPy 风格运算若仍想以图方式执行可使用tf.function包装上述矩阵运算。无论如何分解法先分解、后回代、不求逆的核心思想不随 API 变化。小结本篇从仓库第 3 章第 2 篇配方出发完整走通了 Cholesky 分解求解线性回归的链路法方程AᵀA·x Aᵀb→tf.cholesky分解为L·Lᵀ→ 两次tf.matrix_solve三角回代 → 提取斜率与截距并可视化。与同章矩阵求逆法相比它在保持数学等价的前提下获得更优的复杂度与数值稳定性与后续梯度下降法相比它属于无需调参的闭式精确解。读者可基于 02_lin_reg_decomposition.py 直接运行复现或对照 02_lin_reg_decomposition.ipynb 逐单元阅读推导细节并尝试将特征列扩展到多维以检验方法的通用性。赞分享示例工程【免费下载链接】tensorflow_cookbookCode for Tensorflow Machine Learning Cookbook项目地址https://gitcode.com/gh_mirrors/te/tensorflow_cookbook点击查看免费下载相关推荐OpenArk新一代Windows系统安全分析工具从进程管理到内核调试的全面解决方案OpenArk新一代Windows系统安全分析工具从进程管理到内核调试的全面解决方案 在Windows系统安全分析和调试领域传统的工具往往功能分散、界面复网络安全逆向工程桌面应用从零开始掌握TensorFlow线性回归完整实战教程从零开始掌握TensorFlow线性回归完整实战教程 TensorFlow Course是一个专为初学者设计的TensorFlow教程项目提供简单易用的实战教程深度学习机器学习TensorFlow-Course项目教程使用TensorFlow实现线性回归TensorFlow Course项目教程使用TensorFlow实现线性回归 线性回归是机器学习中最基础且重要的算法之一它通过建立特征与目标值之间的线性关教程深度学习机器学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号