当前位置: 首页 > news >正文

Python23 使用Tensorflow实现线性回归

图片

TensorFlow 是一个开源的软件库,用于数值计算,特别适用于大规模的机器学习。它由 Google 的研究人员和工程师在 Google Brain 团队内部开发,并在 2015 年首次发布。TensorFlow 的核心是使用数据流图来组织计算,使得它可以轻松地利用多种不同的硬件平台,从普通的个人电脑到大型服务器,甚至包括移动设备和边缘设备。

1.Tensorflow的特点和使用场景

主要特点

1.灵活性和可扩展性:TensorFlow 支持多种不同的模型和算法,用户也可以定义自己的操作,使其适应几乎任何任务的计算需求。它可以运行在多种设备上,包括桌面、服务器、移动设备等。

2.自动微分:TensorFlow 提供自动微分功能,意味着系统可以自动帮你计算导数,这一点对于实现机器学习算法中的反向传播等技术尤为重要。

3.性能优化:TensorFlow 提供了多种工具和库,支持对计算图进行优化,能够自动使用 CPU 和 GPU 等硬件加速功能。

4.易于部署:TensorFlow 模型可以轻松地部署到多种平台,用户不需要在不同设备上重新编写代码。

5.大规模机器学习支持:TensorFlow 特别适用于从中到大规模的机器学习项目。

6.生态系统和社区:TensorFlow 拥有广泛的生态系统,包括各种工具、库和社区资源,可以帮助用户从数据准备到模型训练再到部署都得到支持。

使用场景
  • 图像和视频处理:如图像识别、物体检测和视频分析。

  • 自然语言处理:如语言翻译、情感分析和文本分类。

  • 声音识别:如语音到文本的转换。

  • 预测分析:如股票市场预测、能源需求预测等。

  • 强化学习:如游戏和机器人控制系统的开发。

TensorFlow 也不断在发展,增加新功能和改进,例如 TensorFlow 2.x 版本对初学者更友好,简化了很多操作,强化了即时执行(eager execution)的特性,使得交互式开发更为直观和方便。

2.Tensorflow入门

创建一个TensorFlow常量并打印:

import tensorflow as tf# 创建一个TensorFlow常量
hello = tf.constant('Hello TensorFlow')# 使用 TensorFlow 2.x 的方式打印这个常量
print(hello.numpy())  # 转换为NumPy数组格式并打印出来,输出结果中字母b前缀表示该字符串是一个字节串(bytes)而不是一个普通的字符串(str)# 输出:
'''
b'Hello TensorFlow'
'''

创建一个TensorFlow常量并打印:

import tensorflow as tf# 创建两个TensorFlow常量
a = tf.constant(40)
b = tf.constant(2)# 直接执行加法操作并打印结果
result = a + b
print(result.numpy())# 输出:
'''
42
'''

实现一个简单的线性回归模型:

线性回归模型是统计学中用来预测连续变量关系的一种方法。它假设两个或多个变量之间存在线性关系,即一个变量可以被其他一个或多个变量的线性组合来预测。线性回归的目的是找到这些变量之间最佳的直线(或超平面,取决于变量的数量)关系。

想象一下你有一组数据点,这些点在二维空间中分布(即每个数据点都有一个 x 值和一个 y 值)。线性回归模型会尝试画一条直线穿过这些点,使得所有数据点到这条直线的垂直距离之和(称为误差或残差)最小。这条直线就是所谓的“最佳拟合直线”。

在数学上,线性回归可以表示为:

其中:

  • ( y ) 是因变量(目标预测值)

  • ( x ) 是自变量(输入特征)

  • ( w ) 是权重或系数(决定了线的斜率)

  • ( b ) 是偏置或截距(决定了线的位置)

假设你想预测房屋的销售价格。这里,销售价格(( y ))可以被房屋的大小(( x ))来预测。通过收集一些历史数据(已知的房屋大小和对应的售价),你可以使用线性回归模型来找出大小和价格之间的关系。得到的模型可能会告诉你,每增加一个单位的房屋大小,价格会增加多少。

尽管线性回归是一个强大的工具,但它假设输入和输出之间是线性关系,这在现实世界中并不总是成立。当存在非线性关系时,可能需要考虑更复杂的模型,如多项式回归或其他类型的机器学习模型。

下面是一个简单的线性回归模型,用来学习并预测数据点的线性关系。

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt# 使用numpy随机生成100个数据
x_data = np.float32(np.random.rand(2, 100))  # 一个2x100的矩阵,生成了100个具有两个特征的数据点
y_data = np.dot([0.100, 0.200], x_data) + 0.300  # 是目标输出,计算公式为y_data=0.1×x1+0.2×x2+0.3# 构造一个线性模型
b = tf.Variable(tf.zeros([1]))  # 一个初始值为0的标量
w = tf.Variable(tf.random.uniform([1, 2], -1.0, 1.0))  # 权重,一个1x2的矩阵,初始化为在 [-1.0, 1.0] 范围内的随机值
x_data_tensor = tf.constant(x_data)# 定义模型和损失函数
def model():return tf.matmul(w, x_data_tensor) + b   # 计算的是y=wx+b,使用tf.matmul来进行矩阵乘法(w 和 x_data)def loss():  # 计算模型输出与真实输出之间的均方误差return tf.reduce_mean(tf.square(model() - y_data))# 最小化方差
optimizer = tf.optimizers.SGD(0.5)   # 创建了一个梯度下降优化器,学习率为0.5# 记录损失函数值
loss_values = []
steps = []# 模拟训练:
for step in range(201):with tf.GradientTape() as tape:   # 自动计算损失函数关于模型参数的梯度current_loss = loss()gradients = tape.gradient(current_loss, [w, b])optimizer.apply_gradients(zip(gradients, [w, b]))if step % 5 == 0:  # 每5步记录一次loss_values.append(current_loss.numpy())steps.append(step)print(step, w.numpy(), b.numpy(), 'loss:', current_loss.numpy())# 绘制损失函数变化图
plt.figure(figsize=(10, 6))
plt.plot(steps, loss_values, label='Loss Value')
plt.xlabel('Step')
plt.ylabel('Loss')
plt.title('Loss Function Over Training Steps')
plt.legend()
plt.grid(True)
plt.show()# 输出:
'''
0 [[-0.10613185  0.5930704 ]] [0.44480804] loss: 0.21698055
5 [[-0.09899352  0.40378755]] [0.2845074] loss: 0.0077084834
10 [[-0.03101536  0.34016445]] [0.2949372] loss: 0.0032845887
15 [[0.01170078 0.2942564 ]] [0.29628983] loss: 0.0014881333
20 [[0.04059353 0.2634889 ]] [0.29748333] loss: 0.00067443977
···
190 [[0.09999996 0.20000012]] [0.29999995] loss: 1.7585933e-15
195 [[0.09999999 0.20000009]] [0.29999995] loss: 1.0924595e-15
200 [[0.09999999 0.20000009]] [0.29999995] loss: 1.0214052e-15<Figure size 1000x600 with 1 Axes>
'''

图片

使用TensorFlow2.X计算矩阵乘法:

import tensorflow as tf
# 创建一个常量op, 返回值 'matrix1' 代表这个1x2矩阵.
matrix1=tf.constant([[3.,3.]])# 创建另外一个常量op, 返回值 'matrix2' 代表这个2x1矩阵.
matrix2 = tf.constant([[2.],[2.]])# 创建一个矩阵乘法matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
# 返回值 'product' 代表矩阵乘法的结果.
product = tf.matmul(matrix1, matrix2)
matrix1
matrix2
product # 返回的是Tensorflow对象# 打印结果
print(product.numpy()) 
'''
<tf.Tensor: shape=(1, 2), dtype=float32, numpy=array([[3., 3.]], dtype=float32)>
<tf.Tensor: shape=(2, 1), dtype=float32, numpy=
array([[2.],[2.]], dtype=float32)>
<tf.Tensor 'MatMul_8:0' shape=(1, 1) dtype=float32>
[[12.]]
'''

以上内容总结自网络,如有帮助欢迎转发,我们下次再见!

相关文章:

Python23 使用Tensorflow实现线性回归

TensorFlow 是一个开源的软件库&#xff0c;用于数值计算&#xff0c;特别适用于大规模的机器学习。它由 Google 的研究人员和工程师在 Google Brain 团队内部开发&#xff0c;并在 2015 年首次发布。TensorFlow 的核心是使用数据流图来组织计算&#xff0c;使得它可以轻松地利…...

C++:枚举类的使用案例及场景

一、使用案例 在C中&#xff0c;枚举类&#xff08;也称为枚举类型或enum class&#xff09;是C11及以后版本中引入的一种更加强大的枚举类型。与传统的枚举&#xff08;enum&#xff09;相比&#xff0c;枚举类提供了更好的类型安全性和作用域控制。下面是一个使用枚举类的案…...

中英双语介绍美国的州:明尼苏达州(Minnesota)

中文版 明尼苏达州简介 明尼苏达州位于美国中北部&#xff0c;以其万湖之州的美誉、丰富的自然资源和多样化的经济结构而著称。以下是对明尼苏达州的详细介绍&#xff0c;包括其地理位置、人口、经济、教育、文化和主要城市。 地理位置 明尼苏达州东接威斯康星州&#xff0…...

Python实现万花筒效果:创造炫目的动态图案

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame定义绘制万花筒图案的函数主循环 完整代码 引言 万花筒效果通过反射和旋转图案创造出美丽的对称图案。在这篇博客中&#xff0c;我们将使用Python来实现一个动态的万花筒效果。通过利用Pygame库&#xf…...

JavaScript之深入对象,详细讲讲构造函数与常见内置构造函数

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;我是前端菜鸟的自我修养&#xff01;今天给大家详细讲讲构造函数与常见内置构造函数&#xff0c;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;原创不易&#xff0c;如果能帮助到带大家&#xff0c;欢迎…...

PyQt5水平布局--只需5分钟带你搞懂

PyQt5水平布局&#xff08;QHBoxLayout&#xff09;是一种在GUI应用程序中用于组织和排列控件的布局方式。它允许开发者将控件在水平方向上从左到右依次排列&#xff0c;非常适合于需要并排显示控件的场景&#xff0c;如工具栏、水平菜单等。 import sys from PyQt5.QtWidgets…...

telegram mini app和game实现登录功能

接上一篇文章&#xff0c;我们在创建好telegram机器人后&#xff0c;开始开发小游戏或者mini App&#xff0c;那就避免不了登录功能。 公开链接 bot设置教程:https://lengmo714.top/6e79860b.html 参考教程参考教程,telegram已经给我们提供非常多的api&#xff0c;我们在获取用…...

【Python】字典练习

python期考练习 目录 1. 首都名​编辑 2. 摩斯电码 3. 登录 4. 学生的姓名和年龄​编辑 5. 电商 6. 学生基本信息 7. 字母数 1. 首都名 初始字典 (可复制) : d{"China":"Beijing","America":"Washington","Norway":…...

Apache POI、EasyPoi、EasyExcel

目录 ​编辑 &#xff08;一&#xff09;Apache PoI 使用 &#xff08;二&#xff09;EasyPoi使用 &#xff08;三&#xff09;EasyExcel使用 写 读 最简单的读​ 最简单的读的excel示例​ 最简单的读的对象​ &#xff08;一&#xff09;Apache PoI 使用 &#xff08;二&…...

gcop:简化 Git 提交流程的高效助手 | 一键生成 commit message

&#x1f496; 大家好&#xff0c;我是Zeeland。Tags: 大模型创业、LangChain Top Contributor、算法工程师、Promptulate founder、Python开发者。&#x1f4e3; 个人说明书&#xff1a;Zeeland&#x1f4e3; 个人网站&#xff1a;https://me.zeeland.cn/&#x1f4da; Github…...

TS_类型

目录 1.类型注解 2.类型检查 3.类型推断 4.类型断言 ①尖括号&#xff08;<>&#xff09;语法 ②as语法 5.数据类型 ①boolean ②number ③string ④undefined 和 null ⑤数组和元组 ⑥枚举 ⑦any 和void ⑧symbol ⑨Function ⑩Object 和 object 6.高…...

Linux源码阅读笔记10-进程NICE案例分析2

set_user_nice set_user_nice函数功能&#xff1a;设置某一进程的NICE值&#xff0c;其NICE值的计算是根据进程的静态优先级&#xff08;task_struct->static_prio&#xff09;&#xff0c;直接通过set_user_nice函数更改进程的静态优先级。 内核源码 void set_user_nice…...

Elasticsearch实战教程: 如何在海量级数据中进行快速搜索

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 Elasticsearch&#xff08;简称ES&#xff09;是一个基于Apache Lucene™的开源搜索引擎&#xff0c;无论在开源还是专有领…...

Python学习笔记24:进阶篇(十三)常见标准库使用之数据压缩功能模块zlib,gzip,bz2,lzma的学习使用

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 教程链接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 数据压缩…...

【笔记】Android Settings 应用设置菜单的界面代码介绍

简介 Settings应用中&#xff0c;提供多类设置菜单入口&#xff0c;每个菜单内又有各模块功能的实现。 那么各个模块基于Settings 基础的界面Fragment去实现UI&#xff0c;层层按不同业务进行封装继承实现子类&#xff1a; DashboardFragmentSettingsPreferenceFragment 功…...

Symfony配置管理深度解析:构建可维护项目的秘诀

Symfony是一个高度灵活且功能丰富的PHP框架&#xff0c;它提供了一套强大的配置管理系统&#xff0c;使得开发者能够轻松定制和优化应用程序的行为。本文将深入探讨Symfony中的配置管理机制&#xff0c;包括配置的结构、来源、加载过程以及最佳实践。 一、配置管理的重要性 在…...

视频的宣传片二维码怎么做?扫码播放视频的制作教程

现在很多的宣传片会通过扫码的方式来展示&#xff0c;通过将视频生成二维码之后&#xff0c;其他人就可以扫码来查看视频内容&#xff0c;从而简化获取视频的过程&#xff0c;提升视频传播的效率及用户查看视频的便捷性。目前&#xff0c;日常生活和工作中就有视频二维码的应用…...

实用的网站

前端 精简CSS格式 Font Awesome 图标库 BootCDN 加速服务 LOGO U钙网 AI AI工具集 视频下载 B站视频解析下载...

Monorepo(单体仓库)与 MultiRepo(多仓库): Monorepo 单体仓库开发策略与实践指南

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言1. Monorepo 和 MultiRepo 简介2. 为什么选择 Monorepo&#xff1f; 二、Monorepo 和 MultiRepo 的区别1. 定义和概述2. 各自的优点和缺点3. 适用场景 三、Monorepo 的开发策略1. 版本控制2. 依赖管理3. 构建和发布…...

使用 PyTorch 创建的多步时间序列预测的 Encoder-Decoder 模型

Encoder-decoder 模型在序列到序列的自然语言处理任务&#xff08;如语言翻译等&#xff09;中提供了最先进的结果。多步时间序列预测也可以被视为一个 seq2seq 任务&#xff0c;可以使用 encoder-decoder 模型来处理。本文提供了一个用于解决 Kaggle 时间序列预测任务的 encod…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...