Python 全栈体系【四阶】(二十八)

news2024/11/29 20:44:33

第五章 深度学习

四、TensorFlow

请添加图片描述

1. Tensorflow 简介

1.1 什么是 Tensorflow

TensorFlow 由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护的开源深度学习平台,是目前人工智能领域主流的开发平台,在全世界有着广泛的用户群体。

1.2 Tensorflow 的特点

优秀的构架设计,通过“张量流”进行数据传递和计算,用户可以很容易地、可视化地看到张量流动的每一个环节。

可轻松地在 CPU/GPU 上部署,进行分布式计算,为大数据分析提供计算能力的支撑。

跨平台性好,灵活性强。TensorFlow 不仅可在 Linux、Mac 和 Windows 系统中运行,甚至还可在移动终端下工作。

1.3 Tensorflow 发展历史

2011 年,Google 公司开发了它的第一代分布式机器学习系统 DistBelief。

著名计算机科学家杰夫·迪恩(Jeff Dean)和深度学习专家吴恩达(Andrew Y.Ng)都是这个项目的核心成员。

2015 年 11 月,Google 将它的升级版实现正式开源,协议遵循 Apache 2.0 并更名为TensorFlow。

目前,TensorFlow 最新版为 2.X,此处使用 1.14.0。

1.4 Tensorflow 安装

在线安装

  • 安装纯净包:pip install tensorflow
  • 安装 GPU 版本:pip install tf-nightly-gpu

离线安装

  • 下载离线包:https://pypi.org/project/tensorflow/#files执行安装

修改源进行安装。如果安装包 time out 错误,则可以修改 pip 源,重新进行安装,修改方式:

  • 编辑或新建 pip 配置文件(~/.pip/pip.conf),在配置文件下加入:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com
  • 安装时将 timeout 时间设置长一点
sudo pip3 --timeout 600
install tensorflow-1.14.0-cp35-cp35m-manylinux1_x86_64.whl

也可使用如下完整命令安装

pip3 install --user tensorflow==1.14.0 --index-url
https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host
https://pypi.tuna.tsinghua.edu.cn --timeout 600
1.5 案例 1:快速开始

在这里插入图片描述

1.6 案例 2:张量相加

在这里插入图片描述

2. Tensorflow 体系结构

2.1 体系结构概述

TensorFlow 属于“定义”与“运行”相分离的运行机制。从操作层面可以抽象成两种:模型构建和模型运行

  • 客户端:用户编程、执行使用
  • master:用来与客户端交互,并进行任务调度
  • worker process:工作节点,每个 worker process 可以访问一到多个 device
  • device:TF 的计算核心,执行计算
2.2 单机模式与分布式模式

TF 的实现分为“单机实现”和“分布式实现”
在这里插入图片描述

2.3 后端逻辑层次

在这里插入图片描述

3. 基本概念

3.1 张量

张量(Tensor): 多维数组或向量,张量是数据的载体,包含名字、形状、数据类型等属性
在这里插入图片描述

3.2 数据流

数据流图(Data Flow Graph)用“结点”(nodes)和“线”(edges)的有向图来描述数学计算。

“节点” 一般用来表示数学操作,也可以表示数据输入(feed in)的起点/输出(push out)的终点,或者是读取/写入持久变量(persistent variable)的终点。

“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运多维数据数组,即“张量”(tensor)。

一旦输入端的所有张量准备好,节点将被分配到各种计算设备完成异步并行地执行运算。

在这里插入图片描述

3.3 操作

操作(Operation,简称 op)指专门执行计算的节点,tensorflow 函数或 API 定义的都是操作。常用操作包括:

  • 标量运算,向量运算,矩阵运算
  • 带状态的运算
  • 神经网络组建
  • 存储、恢复
  • 控制流
  • 队列及同步运算
3.4 图和会话
  • 图(Graph)描述整个程序结构,Tensorflow 中所有的计算都构建在图中
  • 会话(Session)用来执行图的运算
3.5 变量和占位符
  • 在 Tensorflow 中,变量(Variable)是一种操作,变量是一种特殊的张量,能够进行存储持久化(张量不能进行持久化),它的值是张量
  • 占位符(placeholder)是变量占位符,当不能确定变量的值时,可以先声明一个占位符,真正执行时再传入变量

请添加图片描述

4. 图和会话操作

4.1 什么是图
  • 图(Graph)描述了计算的过程。TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段。在构建阶段, op 的执行步骤被描述成一个图。在执行阶段, 使用会话执行图中的 op。
  • TensorFlow Python 库有一个默认图 (default graph), op 构造器可以为其增加节点。这个默认图对许多程序来说已经足够用了,也可以创建新的图来描述计算过程。
  • 在 Tensorflow 中,op/session/tensor 都有 graph 属性。
4.2 案例 3:查看图对象

在这里插入图片描述

4.3 会话及相关操作

会话(session)用来执行图中的计算,并且保存了计算张量对象的上下文信息。会话的作用主要有:

  • 运行图结构
  • 分配资源
  • 掌握资源(如变量、队列、线程)

一个 session 只能执行一个图的运算。可以在会话对象创建时,指定运行的图。如果在构造会话时未指定图形参数,则将在会话中使用默认图。如果在同一进程中使用多个图(使用 tf.graph( )创建),则必须为每个图使用不同的会话,但每个图可以在多个会话中使用。

创建会话

  • tf.Session() # 使用默认图

运行

  • session.run(fetches, feed_dict=None)
  • 参数:
    • fetches 图中的单个操作,或多个操作的列表
    • feed_dict 运行传入的参数构成的字典,可以覆盖之前的值

关闭

  • session.close()
4.4 案例 4:指定会话运行某个图

在这里插入图片描述

4.5 会话常见的错误及原因

调用 run()方法时,可能会出现的错误及原因

  • RuntimeError:Session 处于无效(如关闭)
  • TypeError:fetches 或 feed_dict 的键是不合适的值
  • ValueError:fetches 或 feed_dict 的键无效或引用的值不存在

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1586520.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【电子通识】热风枪的结构与使用方法

热风枪的结构 热风枪是专门用来拆焊、焊接贴片元器件和贴片集成电路的焊接工具,它主要由主机和热风焊枪两大部分构成。 热风枪主要有电源开关、风速设置、温度设置、热风连接等部件组成。根据不同品牌和价位的热风枪,有一些功能齐全的也集成了烙铁功能。…

vivado 设置 ILA 核以执行测量

设置 ILA 核以执行测量 您添加到自己的设计中的 ILA 核会显示在“硬件 (Hardware) ”窗口中的目标器件下。如果未显示这些 ILA 核 , 请右键 单击器件并选择“ Refresh Device ”。这样将重新扫描 FPGA 或 ACAP 并刷新“ Hardware ”窗口。 注释 &#xff1a…

集装箱5G智能制造工厂数字孪生可视化平台,推进企业数字化转型

集装箱5G智能制造工厂数字孪生可视化平台,推进企业数字化转型。在当下数字化转型的热潮中,集装箱5G智能制造工厂数字孪生可视化平台成为了推动企业转型升级的重要工具。这一平台将先进的5G技术与智能制造相结合,通过数字孪生技术实现生产过程…

Doodle Jump — 使用FlutterFlame开发游戏真不错!

前言 最近网上冲浪的时候,我偶然发现了一个国外的游戏网站,里面聚集了各种有趣的小游戏,类似于国内的4399。在浏览时,我遇到了一款经典的小游戏:Doodle Jump。上一次玩还是在上小学的时候,那时候父母在厨房…

【电子通识】普通电阻、敏感电阻、可调电阻的种类和特点

电阻的作用 在【分立元件】理解电阻 中我们知道电阻是在电路中对电流产生阻碍作用的元件。电阻是电子产品中最基本、最常用的电子元件之一。 有各产品的电路板中基本都有电阻器,通常起限流、滤波或分压等作用。实际上,电阻器的种类很多,根据其…

基于SpringBoot+vue网上点餐系统包含万字文档

基于SpringBoot的网上点餐系统包含万字文档 项目视频演示: springboot027网上点餐系统包含万字文档 开发系统:Windows 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要…

智慧工地管理平台源码:提供专业落地的解决方案

目录 智慧工地平台功能简介 一、劳务实名制系统 二、智能塔吊可视系统 三、视频监控(含安全行为识别) 四、环境监测(联动自动喷淋) 五、起重机械管控(含吊钩可视化) 六、升降电梯智能管控 七、高支…

每天五分钟深度学习:逻辑回归算法的损失函数和代价函数是什么?

本文重点 前面已经学习了逻辑回归的假设函数,训练出模型的关键就是学习出参数w和b,要想学习出这两个参数,此时需要最小化逻辑回归的代价函数才可以训练出w和b。那么本节课我们将学习逻辑回归算法的代价函数是什么? 为什么不能平方差损失函数 线性回归的代价函数我们使用…

KVM 高级功能部署

目录 一、案例分析 1.1、案例概述 1.2、案例前置知识点 1)KVM 虚拟机迁移 2)KSM 内核同页合并 1.3、案例环境 1)本案例环境 2)案例需求 3)案例实现思路 二、案例实施 2.1、静态迁移 1)在…

python---3--sort、lambdalen(list1)、sorted_numbers = sorted(numbers)、list.sort()

学习目标: lambda len(list1) sorted_numbers sorted(numbers)list.sort() 目录 学习目标: 学习内容: 匿名函数 lambda表达式 lambda [参数]: 函数 不需要return len(list1) sorted_numbers sorted(numbers) list.sort(keyNone, r…

【linux篇】ubuntu安装教程

有道是工欲善其事必先利其器,在学习linux前,先得搭建好环境才能事半功倍。 1.VMware虚拟机安装 打开浏览器,可直接在搜索栏中输入VMware。

【算法基础】选择排序与冒泡排序的思想与实现

文章目录 1. 选择排序1.1 思想1.2 实现 2. 冒泡排序2.1 思想2.2 实现 1. 选择排序 1.1 思想 选择排序的思想很简单,如上图所示。在每一次遍历子数组的过程中,选择最小的和子数组的第一位交换。子数组的选择从一开始的整个数组,到后面范围逐渐…

Unity构建详解(7)——AssetBundle格式解析

【文件格式】 文件可以分为文本文件、图片文件、音频文件、视频文件等等,我们常见的这些文件都有行业内的标准格式,其意味着按照一定的规则和规范去保存读取文件,可以获取我们想要的数据。 有些软件会有自己的文件格式,会按照其…

基于SpringBoot+Vue的果蔬种植销售一体化服务平台(源码+文档+部署+讲解)

一.系统概述 伴随着我国社会的发展,人民生活质量日益提高。于是对果蔬种植销售一体化服务管理进行规范而严格是十分有必要的,所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套果蔬种植销售一体…

数字档案馆升级改造的意义

数字档案馆升级改造的意义在于提升档案管理的效率和质量,更好地满足各方面的需求,并为数字时代的档案管理提供更好的支持和保障。具体意义包括: 1. 提高档案存储、检索和利用效率:玖拓智能数字化档案馆可以实现电子存储和快速检索…

zabbix“专家坐诊”第236期问答

问题一 Q:我的trap里已经可以收到信息了,后续要怎么创建监控项呀? A:参考: 问题二 Q:snmp和snmp trap咋搞? A:你指的是如何开启这些协议还是如何做监控项? Q&#xff1…

JUC并发编程2(高并发,AQS)

JUC AQS核心 当有线程想获取锁时,其中一个线程使用CAS的将state变为1,将加锁线程设为自己。当其他线程来竞争锁时会,判断state是不是0,不是自己就把自己放入阻塞队列种(这个阻塞队列是用双向链表实现)&am…

《QT实用小工具·二十》存款/贷款计算器

1、概述 源码放在文章末尾 该项目实现了用于存款和贷款的计算器的功能&#xff0c;如下图所示&#xff1a; 项目部分代码如下&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJ…

Linux Shell:`alias`命令

Linux Shell&#xff1a;alias命令 alias命令是Linux和Unix系统中Shell的内置命令&#xff0c;用于创建命令的简短名称&#xff0c;即别名。这些别名通常用来缩短长命令或为常用命令序列创建便捷的缩写&#xff0c;从而提高工作效率。别名在当前Shell会话中有效&#xff0c;除…

vue 渲染表格两个表头,横向显示时间,纵向显示参数

vue 渲染表格两个表头&#xff0c;横向显示时间&#xff0c;纵向显示参数 具体使用 Element UI 中的 组件实现的 Vue 组件。它用于显示一个包含时间和参数的表格&#xff0c;其中时间横向显示&#xff0c;参数纵向显示。 <template><div><el-table :data"…