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

第五章 深度学习

四、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.mfbz.cn/a/549306.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目升级到jdk21后 SpringBoot相关组件的适配

了解到jdk21是一个LTS版本,可以稳定支持协程的功能。经过调研,将目前线上的jdk8升级到21,使用协程提升并发性能。 目前系统使用springBoot 2.0.3.RELEASE,并且引入了mybatis-spring-boot-starter、spring-boot-starter-data-redi…

电商技术揭秘22:智能仓储与物流优化(上)

相关系列文章 电商技术揭秘一:电商架构设计与核心技术 电商技术揭秘二:电商平台推荐系统的实现与优化 电商技术揭秘三:电商平台的支付与结算系统 电商技术揭秘四:电商平台的物流管理系统 电商技术揭秘五:电商平台…

Hot100【十一】: 347. 前 K 个高频元素

class Solution {public int[] topKFrequent(int[] nums, int k) {// 1.建立hash表来存储每个元素以及它的频率HashMap<Integer, Integer> num2Fre new HashMap<Integer, Integer>();for (int num : nums) {num2Fre.put(num, num2Fre.getOrDefault(num, 0) 1);}/…

白盒测试-基本路径覆盖

​ 路径覆盖可以使程序中的路径都被测试到&#xff0c;但是&#xff0c;要对程序中的路径做到完全覆盖经常是无法实现的。为了解决这一难题&#xff0c;我们需要在保证测试质量的前提下把测试的路径数量压缩到一定的范围内 ​ 基本路径覆盖法是在程序控制流图的基础上&#xf…

基于ADB的Scrcpy实现电脑控制手机

Scrcpy是一个开源的&#xff0c;基于ADB&#xff08;Android 调试桥&#xff09;的手机到电脑上的投屏操控的实现&#xff0c;本文将介绍如何搭建开发环境&#xff0c;使得在Windows系统中去控制投屏的安卓手机。 1. 安装投屏软件 下载Scrcpy软件到电脑上&#xff0c;该软件中…

JVM主要知识点详解

目录 1. 性能监控和调优 1.1 调优相关参数 1.2 内存泄漏排查 1.3 cpu飙⾼ 2. 内存与垃圾回收 2.1JVM的组成&#xff08;面试题&#xff09; 2.2 Java虚拟机栈的组成 2.3 本地方法栈 2.4 堆 2.5 方法区&#xff08;抽象概念&#xff09; 2.5.1 方法区和永久代以及元空…

【vue】Pinia-2 安装Pinia,使用store

1. 安装Pinia 在项目路径下执行npm install pinia 在package.json中查看 2. 使用store 在main.js中添加 import { createPinia } from pinia const pinia createPinia()修改createApp方法 最后示例如下&#xff08;三处修改&#xff09; import { createApp } from vue //…

基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测

上一篇文章中&#xff0c;我们详细介绍了构建 Apifox Cli 的 Docker 镜像的步骤&#xff0c;并通过简单的示例演示了如何利用 GitLab 的 CI/CD 功能&#xff0c;将构建好的镜像利用在自动化测试作业中。在今天的文章中&#xff0c;我们将重点讨论如何构建 JMeter 的 Docker 镜像…

【高通平台】如何升级蓝牙的firmware

1. 您可以使用以下命令升级固件 adb push apbtfw11.tlv /bt_firmware/image/ adb push apnv11.bin /bt_firmware/image/ adb shell sync 或者 adb push crbtfw21.tlv /vendor/bt_firmware/image adb push crnv21.bin /vendor/bt_firmware/image adb shell sync 查看代码路径…

项目5-博客系统3+接口完

1.实现显示用户信息 ⽬前⻚⾯的⽤⼾信息部分是写死的. 形如 我们期望这个信息可以随着用户登陆而发生改变. • 如果当前⻚⾯是博客列表⻚, 则显⽰当前登陆⽤⼾的信息. • 如果当前⻚⾯是博客详情⻚, 则显⽰该博客的作者⽤⼾信息. 注意: 当前我们只是实现了显⽰⽤⼾名, 没有…

Linux学习(1)

参考学习韩顺平老师 第一章&#xff1a;LINUX 开山篇-内容介绍 1.2.Linux 使用在那些地方 linux运营工程师主要做&#xff1a; 服务器规划 调试优化 对系统进行日常监控 故障处理 对数据的备份和处理 日志的分析 1.3.Linux 的应用领域 1.个人桌面领域的应用 …

短视频底层逻辑分析

短视频底层逻辑 1.迭代模型_ev 2.Douyin的本质_ev 3.Douyin的审核机制_ev 4.平台趋势_ev 5.定位_ev 6.建立用户期待_ev 7.好内容的定义_ev 8怎么做好内容_ev 9.如何做好选题_ev 10.如何快速模仿_ev 11.账号拆解的底层逻辑_ev 12选人的重要性_ev 13.内容的包装_ev 14.打造大IP的…

easyexcel升级3.3.4失败的经历

原本想通过easyexcel从2.2.6升级到3.3.3解决一部分问题&#xff0c;结果之前的可以用的代码&#xff0c;却无端的出现bug 1 Sheet index (1) is out of range (0…0) 什么都没有改&#xff0c;就出了问题&#xff0c;那么问题肯定出现在easyexcel版本自身.使用模板填充的方式进…

Innodb之redo日志

Innodb引擎执行流程 redo log ​ MySQL中的redo log&#xff08;重做日志&#xff09;是实现WAL&#xff08;预写式日志&#xff09;技术的关键组件&#xff0c;用于确保事务的持久性和数据库的crash-safe能力。借用《孔乙己》中酒店掌柜使用粉板记录赊账的故事&#xff0c;…

Flask前端页面文本框展示后端变量,路由函数内外两类

一、外&#xff01;路由函数外的前后端数据传输 Flask后端 ↓ 首先导入包&#xff0c;需要使用 后端&#xff1a;flask_socketio来进行路由外的数据传输&#xff0c; from flask_socketio import SocketIO, emit 前端&#xff1a;还有HTML头文件的设置。 <!DOCTYPE …

【云原生数据库:原理与实践】1- 数据库发展历程

1-数据库发展历程 1.1 数据库发展概述 从1960年&#xff1a;Integrated Database System&#xff08;IDS&#xff09;&#xff0c;该系统是一个网状模型&#xff08;Network Model&#xff09;到 IMS&#xff08;Information Management System&#xff09;&#xff0c;使用了…

Rust腐蚀服务器清档多教程

Rust腐蚀服务器清档多教程 大家好我是艾西&#xff0c;一个做服务器租用的网络架构师。上期教了大家怎么搭建服务器以及安装插件等那么随着大家自己架设服或是玩耍的时间肯定会有小伙伴想要去新增开区数量或是把原本的服务器进行一些调整等&#xff0c;那么今天主要聊的就是怎…

【智能算法】鸭群算法(DSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年&#xff0c;Zhang等人受到自然界鸭群觅食行为启发&#xff0c;提出了鸭群算法&#xff08;Duck Swarm Algorithm, DSA&#xff09;。 2.算法原理 2.1算法思想 DSA基于自然界鸭群觅食过程&…

[leetcode] max-area-of-island

. - 力扣&#xff08;LeetCode&#xff09; 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0&#xff08;代表水&…

基于SpringBoot+Vue的共享汽车管理系统(源码+文档+包运行)

一.系统概述 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了共享汽车管理系统的开发全过程。通过分析共享汽车管理系统管理的不足&#xff0c;创建了一个计算机管理共享汽车管理系统的方案。文章介绍了共享汽车管理…
最新文章