百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Tensorflow解说

liuian 2024-11-28 00:45 15 浏览

TensorFlow简介

本节将从五个方面对 TensorFlow 进行一个简单的介绍。包括 TensorFlow 是什么、为什么选择TensorFlow、TensorFlow 的发展、TensorFlow 能干什么以及 TensorFlow 的核心理念。

1. 什么是 TenosrFlow

TensorFlow 是一个开源软件库,用于各种感知和语言理解任务的机器学习。—— Wiki 百科

这种过于官方化的定义可能比较难于理解,我们在这里给出一个比较容易理解的解释:TensorFlow 是一个开源的机器学习的框架,我们可以使用 TensorFlow 来快速地构建神经网络,同时快捷地进行网络的训练、评估与保存

也正是因为 TensorFlow 是一个开源的软件库,因此只要我们安装了 TensorFlow,我们就可以使用import 的方式来引入

import tensorflow as tf

2. 为什么选择 TensorFlow 以及优缺点

谈到为什么选择 TensorFlow,有很多同学就会问“为什么不使用 PyTorch?”、“为什么不自己实现网络而必须使用框架呢?”等等一系列问题。

首先我们回答“为什么不自己去实现网络结构而必须使用框架”的问题:

实际上如果有能力实现神经网络结构,我们完全可以自己动手实现我们所需要的神经网络,但是这样会带来一个问题:工作量太大,我们会把我们大部分的精力花费在底层的构建而不是主要的模型的构建上。

在当下的潮流之中,使用框架是大势所趋,使用框架能够帮助我们节省很多的底层的、繁琐的、容易出错的工作。比如在 Web 开发之中会使用 Django 和 Spring Boot 等框架,在桌面开发中会使用 MFC、QT 等框架,而在机器学习领域我们可以选择使用 TensoFlow 框架。

另外通过使用框架,我们可以把我们的精力更多的放在上层的模型的构建之上,一方面可以帮助我们专注于高层次的工作,另一方面又可以帮助我们避免底级的一些错误。

现在我们可以回答第二个问题,为什么不使用其他的机器学习框架?

说到这里我们不得不说一下 TensorFlow 的优点,相比于其他的机器学习框架,Tensorflow 框架是最适用于工业部署的一个机器学习框架,换句话说,TensorFlow 非常适用于在生产环境中进行应用。下面我们来细数一下 TensorFlow 的优点。

- 整个项目开源;

- 文档非常全面而且包含中文教程,学习成本比较低;

- 其内部含有很多高阶神经网络API,我们可以用一个语句来生产一个网络;

- 使用其内部的TensorFlow Service可以实现快速上线部署;

- 得益于高阶API,使用TensorFlow进行神经网络开发非常迅速;

- 内部内置TesnorBoard工具,可以很好的进行可视化工作;

- 对移动设备的支持非常友好;

- TensorFlow内部内置分布式训练工具,开源很方便地进行分布式训练。

讨论了这么多优点,TensorFlow 就没有缺点吗?当然有,TensorFlow 也有一些显而易见的缺点:

- TensorFlow程序的调试较为困难,我们不能深入其内部进行调试;

- TensorFlow的许多高阶API导致我们修改我们自己的模型比较困难(相对而言);

- TensorFlow1.x与TensorFlow2.x的差别比较大,以前的代码迁移比较困难。

总结来说,如果你想进行神经网络的快速构建、训练与部署,那么 TensorFlow 是你非常好的选择,但是如果你想从事一些科研的方面的工作,那么 TensorFlow 可能并没有 Pytorch 那么容易驾驭。

3. TensoFlow的发展

很多人都知道 TensorFlow 是从 1.x 版本发展到 2.x 版本的,而且目前网络上很多 TensorFlow 的教程都还停留在 TensorFlow1.x 阶段。在这里,我便带领大家回顾一下 TensorFlow 的发展历程:

  • 从 2010 年开始,谷歌大脑团队便在其内部使用 DistBelief 框架进行机器学习的相关工作,后来经过不断地简化与重构逐渐形成了 TesnorFlow,这便是 TensorFlow 的前身,但是此时的 TensorFlow还没有开源;
  • 2015 年,年轻的 TensorFlow 正式开源,此时的 TensorFlow 依然处在 0.x 的非正式版本;
  • 一直到 2016 年 12 月期间,TensorFlow 逐渐支持了分布式、移动设备 与Windows 系统;
  • 2017 年,TensorFlow 正式发布了 1.0.0 版本,由此 TensorFlow 正式版发布;
  • 直到 2019 年期间,TensorFlow 逐步加入了 TPU、张量处理单元等工具;
  • 2019 年 10 月,TensorFlow2.0 正式发布,这也标志着 TensorFlow 进入了 2.0 时代。

在当前,TensorFlow 的最新稳定版本为 2.2 版本

由于 TensorFlow1.x 与 TensorFlow2.x 的差别较大,因此在我们的学习与使用当中,我们应当首先学习TensorFlow2.x 版本。

相比于TensorFlow1.x,TensorFlow2.x 最大的优点就是加入了 Keras,而TensorFLow 也是默认采用 Eager 模式来构建我们的模型,这对于一些初学者来说是巨大的福音,而这在TensorFlow1.x时代是没有办法实现的。

依托于谷歌强大的影响与号召力,TenorFlow 的用户群体非常巨大,而且使用 TensorFlow 得到的训练结果非常优秀,对于机器学习的初学者来说,这确实是一件不可多得的珍宝。

4. TensorFlow能干什么

其实这个问题在前面的概念中已经涉及了,TensorFlow主要负责机器学习的每一个步骤,包括:

- 模型的构建;

- 模型的训练;

- 模型的保存与加载;

- 模型的评估;

- 使用加速器提升性能;

- 在生产环境中部署网络;

- 对模型的数据进行可视化(TensorBoard);

- 其他功能。

通过这样的梳理我们可以发现,TensorFlow 可以满足我们在机器学习中的从模型构建到模型的部署的绝大部分的工作需求

5. TensorFlow的核心理念

前面介绍了这么多,我们现在可以深入 TensorFlow 内部来简单了解一下 TensorFlow 的核心理念。

简单来说, TensorFlow 的核心理念包括计算图与张量(Tensor)

5.1 计算图

在 TensorFlow 中,我们首先构建模型,TensorFLow会根据我们的模型来构建一个计算图,然后TensorFLow 会在该计算图中进行相应的运算、迭代与求梯度等操作,从而得到我们最终想要的结果。

下面是一个 TensorFlow 模型的计算图,目前诸位同学可以将其理解为模型图或者数据流动图

该图为在 TensorBoard 之中得到的计算图,其中的节点表示运算或者网络层,而线条表示数据流动。

5.2 张量

张量(Tensor)就是 TensorFlow 的名字的由来之一,TensorFLow 顾名思义就是张量流动的意思,由此可见张量为 TensorFlow 的最核心的概念之一。

张量在TensorFLow之中以数组的形式存储,张量的主要组成要素包括:

  • 名称(name);
  • 形状(shape);
  • 类型(dtype)。

简单的理解,我们可以将张量看作多维数组,因为是多维数组,因此可以包含三维或者三维以上的维度,对于初学者来说可能不是特别友好。

在 TensorFLow 之中我们可以很轻松的构建一个张量,比如以下代码:

x = tf.ones((64, 28, 28, 3))

由此我们构建了一个思维张量,他的第一维是 64 个维度,第二维与第三维都是 28 个维度,第四维是3 个维度。

对于二维张量,我们可以理解为一个平面;对于三位数据,我们可以理解为一个空间;而对于四维数据我们可以理解为一个在三维空间的外面又增加了一个维度;五维张量则是又增加一个维度......

在TensorFlow之中我们一般将第一维数据作为批大小来处理(Batch_Size),也就是一批数据中含有多少个样本子数据。更一般的,在不确定批大小的情况下,我们直接将第一维设置为 None,比如:

x = tf.ones((None, 28 ,28, 3))

总结

TensorFlow 是一个相对比较完整的机器学习框架,无论是对于初学者还是开发人员来说都是非常不错的选择。如果想要入门机器学习或者在机器学习方面有所深造,那么 TensorFLow 是非常不错的选择。

相关推荐

Docker 47 个常见故障的原因和解决方法

【作者】曹如熙,具有超过十年的互联网运维及五年以上团队管理经验,多年容器云的运维,尤其在Docker和kubernetes领域非常精通。Docker是一种相对使用较简单的容器,我们可以通过以下几种方式...

电脑30个快问快答,解决常见电脑问题

1.强行关机/停电对电脑有影响吗?答:可能损坏硬盘(机械硬盘风险高)、未保存数据丢失,偶尔一次影响小,但频繁操作会缩短硬件寿命。2.C盘满影响速度吗?答:会!系统运行需C盘空间缓存临时数据,空间不...

使用Tcpdump包抓取分析数据包的详细用法

TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。tcpdump就是一种...

电脑启动不了(BootDevice Not Found Hard Disk-3F0)解决方案

HP品牌机,开机启动不了,黑屏,开机取下主板电池恢复BIOS后,开机显示找不到启动盘。一、按F2键进入BIOS,出现硬盘内存检测界面的话,直接退出。就会出现这个界面,光标键向下,选择BIOSSetu...

电脑开机黑屏别慌!快码住!起底维修老师傅不能说的秘密

按下开机键却只收获黑屏大礼包?那些神秘的英文提示、刺耳的蜂鸣声,其实是电脑在给你发送求救信号!从按下电源到进入桌面的12秒里,你的电脑经历了史诗级的硬件自检与系统加载,今天我们就破译这段“摩斯电码”。...

电脑启动故障为何总要先看BIOS?新手必读的关键知识解析

最近在帮朋友们解答电脑无法正常开机的问题时,发现大家经常收到一句高频建议:“先检查BIOS”。对不少普通用户而言,BIOS依然是个神秘的存在。那么,BIOS到底是什么?电脑出现哪些故障会与它相关呢?本...

Windows 11 KB5053598更新:安全补丁还是系统噩梦?

2025年3月11日,微软发布了Windows1124H2的强制性更新KB5053598,作为“周二补丁日”(PatchTuesday)的一部分。然而,这款本应提升系统安全性的更新却引发了广泛的...

飞牛OS入门安装遇到问题,如何解决?

之前小编尝试了用旧电脑装飞牛OS安装之前特意查了一些硬件要求飞牛OS目前支持主流的x86架构硬件主机需能连网线飞牛OS暂时不支持只有无线网卡的安装貌似很多小伙伴在一开始安装就卡住了那今天咱们汇总分...

几种常见的电脑开机黑屏显示白色英文字母解决方法

当电脑开机出现黑屏并显示白色英文字母时,通常表示系统启动过程中遇到了错误。以下是几种常见原因及对应的解决方法,按照排查顺序整理:一、检查外接设备与硬件连接可能原因:外接U盘、移动硬盘等未拔出,或内部硬...

电脑启动出现问题,为什么都要先检查BIOS?

【ZOL中关村在线原创技巧应用】最近在回答问题的时候,总会发现很多朋友都在问“电脑无法正常开机怎么办?”这样类似的问题,而许多DIY大佬的回复总会出现一条高频建议“先检查BIOS”。但对于许多普通用户...

教你怎么用JavaScript检测当前浏览器是无头浏览器

什么是无头浏览器(headlessbrowser)?无头浏览器是指可以在图形界面情况下运行的浏览器。我可以通过编程来控制无头浏览器自动执行各种任务,比如做测试,给网页截屏等。为什么叫“无头”浏览器?...

12个高效的Python爬虫框架,你用过几个?

实现爬虫技术的编程环境有很多种,Java、Python、C++等都可以用来爬虫。但很多人选择Python来写爬虫,为什么呢?因为Python确实很适合做爬虫,丰富的第三方库十分强大,简单几行代码便可实...

运维的报表之路,用 node.js 轻松发送 grafana 报表

在运维过程中,无论是监控还是报表,都会有一些通过邮件发送图表的需求,由于开源的zabbix,grafana和kibana等并不完全具有“想发送哪儿就发送哪儿”的图片生成功能,在grafana...

C#基于浏览器内核的高级爬虫(c#爬取网页内容)

基于C#.NET+PhantomJS+Sellenium的高级网络爬虫程序。可执行Javascript代码、触发各类事件、操纵页面Dom结构、甚至可以移除不喜欢的CSS样式。很多网站都用Ajax动态加...

如何优化一个秒杀项目?(秒杀实现思路)

问题1:使用jmeter性能压测,定位瓶颈代码步骤流程:线程组--->Http请求--->查看结果树--->聚合报告tips:host的文件--->优先调用映射,减少DNS的时...