首页/新闻资讯/正文详情

【深度学习】TensorFlow深度模型构建:训练一元线性回归模型

发布时间:2026/11/3 9:11:54 来源:云帆数科 栏目:资讯中心
【深度学习】TensorFlow深度模型构建:训练一元线性回归模型
文章目录1. 生成拟合数据集2. 构建线性回归模型数据流图3. 在Session中运行已构建的数据流图4. 输出拟合的线性回归模型5. TensorBoard神经网络数据流图可视化6. 完整代码本文讲解以一元线性回归模型为例介绍如何使用TensorFlow搭建模型并通过会话与后台建立联系并通过数据来训练模型求解参数 直到达到预期结果为止。学习如何使用TensorBoard可视化工具来展示网络图、张量的指标变化、张量的分布情况等。设给定一批由 y3x2生成的数据集( x y )建立线性回归模型h(x) wx b 预测出 w3 和 b2。1. 生成拟合数据集数据集只含有一个特征向量注意误差项需要满足高斯分布正态分布程序使用了NumPy和Matplotlib库。NumPy是Python的一个开源数值科学计算库可用来存储和处理大型矩阵。Matplotlib是Python的绘图库它可与NumPy一起使用提供了一种有效的MATLAB开源替代方案。其代码如下:# 首先导入3个库importnumpyasnpimporttensorflowastfimportmatplotlib.pyplotasplt# 随机产生100个数据点,随机概率符合高斯分布(正态分布)num_points100vectors_set[]foriinrange(num_points):# Draw random samples from a normal (Gaussian) distribution.x1np.random.normal(0.,0.55)y1x1*0.10.3np.random.normal(0.0,0.03)# 坐标点vectors_set.append([x1,y1])# 定义特征向量xx_data[v[0]forvinvectors_set]# 定义标签向量yy_data[v[1]forvinvectors_set]# 按[x_data,y_data]在X-Y坐标系中以打点方式显示,调用plt建立坐标系并将值输出plt.scatter(x_data,y_data,cb)plt.show()2. 构建线性回归模型数据流图# 利用TensorFlow随机产生w和b,为了图形显示需要,分别定义名称 myw 和 mybwtf.Variable(tf.compat.v1.random_uniform([1],-1.,1.),namemyw)btf.Variable(tf.zeros([1]),namemyb)# 根据随机产生的w和b,结合上面随机产生的特征向量x_data,经过计算得出预估值yw*x_datab# 以预估值y和实际值y_data之间的均方差作为损失losstf.reduce_mean(tf.square(y-y_data,namemysquare),namemyloss)# 采用梯度下降法来优化参数optimizertf.compat.v1.train.GradientDescentOptimizer(0.5)trainoptimizer.minimize(loss,namemytrain)3. 在Session中运行已构建的数据流图# global_variables_initializer初始化Variable等变量sesstf.compat.v1.Session()inittf.compat.v1.global_variables_initializer()sess.run(init)print(w,sess.run(w),b ,sess.run(b),sess.run(loss))# 迭代20次trainforstepinrange(20):sess.run(train)print(w,sess.run(w),b,sess.run(b),sess.run(loss))输出w和b损失值的变化情况可以看到损失值从0.42降到了0.001。当然每次拟合的结果都不一致。4. 输出拟合的线性回归模型plt.scatter(x_data,y_data,cb)plt.plot(x_data,sess.run(w)*x_datasess.run(b))plt.show()5. TensorBoard神经网络数据流图可视化TensorBoard 是 TensorFlow 的可视化工具包 使用者通过TensorBoard可以将代码实现的数据流图以可视化的图形显示在浏览器中这样方便使用者编写和调试TensorFlow数据流图程序。首先将数据流图写入到文件中# 写入磁盘,以供TensorBoard在浏览器中展示writertf.compat.v1.summary.FileWriter(./mytmp,sess.graph)运行该代码后就可以将整个神经网络节点信息写入./mytmp目录下。打开终端执行如下命令tensorboard--logdir./tensflow-demo/mytmp Serving TensorBoard on localhost;to expose to the network, use a proxy or pass--bind_allTensorBoard2.15.1 at http://localhost:6007/(Press CTRLC to quit)访问http://localhost:6007/如下图生成的神经网络数据流图通过添加参数--bind_all将图暴露给网络。6. 完整代码# 首先导入3个库importnumpyasnpimporttensorflowastfimportmatplotlib.pyplotasplt# 随机产生100个数据点,随机概率符合高斯分布(正态分布)num_points100vectors_set[]foriinrange(num_points):# Draw random samples from a normal (Gaussian) distribution.x1np.random.normal(0.,0.55)y1x1*0.10.3np.random.normal(0.0,0.03)# 坐标点vectors_set.append([x1,y1])# 定义特征向量xx_data[v[0]forvinvectors_set]# 定义标签向量yy_data[v[1]forvinvectors_set]# 按[x_data,y_data]在X-Y坐标系中以打点方式显示,调用plt建立坐标系并将值输出# plt.scatter(x_data, y_data, cb)# plt.show()tf.compat.v1.disable_v2_behavior()# 利用TensorFlow随机产生w和b,为了图形显示需要,分别定义名称myw 和 mybwtf.Variable(tf.compat.v1.random_uniform([1],-1.,1.),namemyw)btf.Variable(tf.zeros([1]),namemyb)# 根据随机产生的w和b,结合上面随机产生的特征向量x_data,经过计算得出预估值yw*x_datab# 以预估值y和实际值y_data之间的均方差作为损失losstf.reduce_mean(tf.square(y-y_data,namemysquare),namemyloss)# 采用梯度下降法来优化参数optimizertf.compat.v1.train.GradientDescentOptimizer(0.5)trainoptimizer.minimize(loss,namemytrain)# global_variables_initializer初始化Variable等变量sesstf.compat.v1.Session()inittf.compat.v1.global_variables_initializer()sess.run(init)print(w,sess.run(w),b ,sess.run(b),sess.run(loss))# 迭代20次trainforstepinrange(20):sess.run(train)print(w,sess.run(w),b,sess.run(b),sess.run(loss))# 写入磁盘,供TensorBoard在浏览器中展示# writer tf.compat.v1.summary.FileWriter(./mytmp, sess.graph)#plt.scatter(x_data,y_data,cb)plt.plot(x_data,sess.run(w)*x_datasess.run(b))plt.show()因为运行的是TensorFlow 1.x 系统运行的是 TensorFlow 2.x.所以运行过程中有两个问题1.没有Session在 TF2 中可以通过tf.compat.v1.Session()访问会话2.losspassed to Optimizer.compute_gradients should be a function when eager execution is enabled在代码前面添加如下代码屏蔽v2的行为tf.compat.v1.disable_v2_behavior()

相关推荐

flink内存管理(二):MemorySegment的设计与实现:(1)架构、(2)管理堆内/外内存、(3)写入/读取内存、(4)垃圾清理器
flink内存管理(二):MemorySegment的设计与实现:(1)架构、(2)管理堆内/外内存、(3)写入/读取内存、(4)垃圾清理器

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:11:54

【Trino权威指南(第二版)】Trino的架构、trino架构组件、 trino连接器架构的细节、trino的查询执行模型
【Trino权威指南(第二版)】Trino的架构、trino架构组件、 trino连接器架构的细节、trino的查询执行模型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:11:54

【flink状态管理(四)】MemoryStateBackend的实现
【flink状态管理(四)】MemoryStateBackend的实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:11:54

Java中的引用类型分为四种:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)
Java中的引用类型分为四种:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)

Object obj new Object() 这行代码太熟了,熟到大多数人从没想过:obj 只是引用变量,而“引用”本身是分等级的。除了这种默认、最强硬的一种,JDK 还提供了软引用、弱引用、虚引用。它们改变的其实只是一件事——对象什么时候可以被… · 2026/11/3 9:53:58

【系统架构设计师-Redis(2)】Redis 五大核心数据结构与典型场景实战(含秒杀、限流、队列、排行榜)
【系统架构设计师-Redis(2)】Redis 五大核心数据结构与典型场景实战(含秒杀、限流、队列、排行榜)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:53:58

TabPFN-3终极指南:如何在5分钟内掌握这个革命性表格预测模型
TabPFN-3终极指南:如何在5分钟内掌握这个革命性表格预测模型

TabPFN-3终极指南:如何在5分钟内掌握这个革命性表格预测模型 你想知道如何快速上手最先进的表格预测模型吗?TabPFN-3作为一款基于Transformer架构的表格预测基础模型,通过上下文学习技术,能够在单次前向传播中解决复杂的表格预测… · 2026/11/3 9:53:58

LTX-Best-Face-ID vs 传统视频生成工具:为什么它是人脸保留的最佳选择
LTX-Best-Face-ID vs 传统视频生成工具:为什么它是人脸保留的最佳选择

LTX-Best-Face-ID vs 传统视频生成工具:为什么它是人脸保留的最佳选择 LTX-Best-Face-ID是一款基于LTX-2.3(22B)模型的身份保留参考转视频LoRA工具,它能根据人物参考照片和文本提示生成保持人物身份的视频。与传统视频生成工具相… · 2026/11/3 9:53:58

BBDown 下载 B 站视频完整指南:从单集视频到批量番剧的命令行工具
BBDown 下载 B 站视频完整指南:从单集视频到批量番剧的命令行工具

BBDown 下载 B 站视频完整指南:从单集视频到批量番剧的命令行工具 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown BBDown 是一个免费开源的命令行 B 站视频下载器&#xff… · 2026/11/3 9:53:58

如何快速部署Mistral Medium 3.5 128B:5步完成本地vLLM服务器搭建
如何快速部署Mistral Medium 3.5 128B:5步完成本地vLLM服务器搭建

如何快速部署Mistral Medium 3.5 128B:5步完成本地vLLM服务器搭建 Mistral Medium 3.5 128B是一款具有1280亿参数的强大开源AI模型,支持256k超长上下文窗口,具备多模态输入、函数调用和推理能力。本文将通过5个简单步骤,教你如何… · 2026/11/3 9:52:57

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码