轻松体验TensorFlow 第一个神经网络:基本分类(Part 1)

轻松体验TensorFlow 第一个神经网络:基本分类(Part 1),第1张

关于 Jupyter Notebook 的使用,可以参考如下链接,有详细的步骤和截图:

Jupyter Notebook神器-免费体验来自微软的Azure Notebook

基于Jupyter Notebook 快速体验Python和plot()绘图方法

基于Jupyter Notebook 快速体验matplotlibpyplot模块中绘图方法

TensorFlow 基本分类(basic classification)演示的完整代码,可以访问:

上述命令运行时间较长,请耐心等待。

pip list 命令用来查看当前环境下的Python 包,grep 命令用来查找和筛选。中间的竖线表示 pipe(管道),将pip list 命令的输出作为 grep 命令的输入。

pip 前面的感叹号是cell 中运行 Linux 命令的方式,在命令行中运行则不需要加感叹号。

上述命令的输出,表示当前环境已经安装好了 TensorFlow 包。如果没有安装,可以通过如下命令安装:

安装TensorFlow命令,说明如下:

本地安装TensorFlow,截图如下。

TensorFlow 安装完成:

下面训练了一个神经网络模型,来对服装图像进行分类,例如运动鞋和衬衫。需要使用tfkeras,这是一个用于在TensorFlow 中构建和训练模型的高级API。

下面使用Fashion MNIST 数据集,其中包含了10个类别中共70,000张灰度图像。图像包含了低分辨率(28 x 28像素)的单个服装物品,链接如下所示:

Fashion-MNIST是一个替代MNIST手写数字集的图像数据集。 它是由Zalando(一家德国的 时尚 科技 公司)旗下的研究部门提供。其涵盖了来自10种类别的共7万个不同商品的正面。Fashion-MNIST的大小、格式和训练集/测试集划分与原始的MNIST完全一致。60000/10000的训练测试数据划分,28x28的灰度。可以直接用它来测试你的机器学习和深度学习算法性能,且不需要改动任何的代码。

MNIST是 Mixed National Institute of Standards and Technology database 的简写。

下面使用60,000张图像来训练网络和10,000张图像来评估网络模型学习图像分类任务的准确程度。

可以直接从TensorFlow 使用Fashion MNIST,只需导入并加载数据。

加载数据集并返回四个NumPy数组:

图像是28x28 NumPy数组,像素值介于0到255之间。labels是一个整数数组,数值介于0到9之间。

下面是图像类别和标签的对应关系:

每个图像都映射到一个标签。由于类别名称不包含在数据集中,因此把他们存储在这里以便在绘制图像时使用:

以下显示训练集中有60,000个图像,每个图像表示为28 x 28像素:

训练集中有 60000个标签,并且每个标签都是0-9 之间的整数。

测试集和训练集类似,有10000个图像和对应的10000个图像标签。

在训练网络之前必须对数据进行预处理。 如果检查训练集中的第一个图像,将看到像素值落在0到255的范围内:

代码说明:

pltfigure() 创建一个新的figure。

pltcolorbar() 方法用来显示当前image 的颜色方案。

在发送到神经网络模型之前,我们将这些值缩放到0到1的范围(归一化处理)。为此,我们将像素值值除以255。重要的是,对训练集和测试集要以相同的方式进行预处理:

显示训练集中的前25个图像,并在每个图像下方显示类别名。验证数据格式是否正确,我们是否已准备好构建和训练网络。

代码说明:

pltxticks([])和pltyticks([]) - 以空list 作为xticks() 方法的参数,查看数据集中图像隐藏坐标轴。

pltxlabel() 方法可以在 x 轴的下方显示指定文本。

pltsubplot(5,5,1) 方法 - 表示5行5列共25个位置,最后一个参数1 表示Axes的位置,第一行的位置编号为:1-5,第二行的位置编号为:6-10,依此类推。

上述代码遍历了25 个位置(for i in range(25)),批量显示多张图。针对每一个位置,设置隐藏x和y轴,不显示网关线(grid),在对应的位置显示图像以及类别(label)。

需要注意的地方:Axes 位置的起始值是1,不是常见的0。

对TensorFlow 深度学习有兴趣的同学,可以访问如下链接。

是的。

使用支持gpu的tensorflow的前提是安装了正确版本的CUDA和cuDNN。

关于CUDA和cuDNN的安装可以参考NVIDIA官网和网上各种安装教程,在此不再赘述。本文想要强调的重点是要安装支持自己的GPU的版本,然后根据CUDA版本安装正确版本的cuDNN,最后根据安装的CUDA和cuDNN的版本选择正确的tensorflow版本安装,否则安装了tensorflow但是也无法使用GPU,程序跑起来只是在使用CPU。

调试程序时候,有时候需要打印tensor的值的时候,直接print显示的是如下tensor的shape、dtype等信息

使用如下方法可打印tensor值

结果:

你好,基本使用

使用 TensorFlow, 你必须明白 TensorFlow:

使用图 (graph) 来表示计算任务

在被称之为 会话 (Session) 的上下文 (context) 中执行图

使用 tensor 表示数据

通过 变量 (Variable) 维护状态

使用 feed 和 fetch 可以为任意的 *** 作(arbitrary operation) 赋值或者从其中获取数据

综述

TensorFlow 是一个编程系统, 使用图来表示计算任务 图中的节点被称之为 op

(operation 的缩写) 一个 op 获得 0 个或多个 Tensor, 执行计算,

产生 0 个或多个 Tensor 每个 Tensor 是一个类型化的多维数组

例如, 你可以将一小组图像集表示为一个四维浮点数数组,

这四个维度分别是 [batch, height, width, channels]

一个 TensorFlow 图描述了计算的过程 为了进行计算, 图必须在 会话 里被启动

会话 将图的 op 分发到诸如 CPU 或 GPU 之类的 设备 上, 同时提供执行 op 的方法

这些方法执行后, 将产生的 tensor 返回 在 Python 语言中, 返回的 tensor 是

numpy ndarray 对象; 在 C 和 C++ 语言中, 返回的 tensor 是

tensorflow::Tensor 实例

计算图

TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段 在构建阶段, op 的执行步骤

被描述成一个图 在执行阶段, 使用会话执行执行图中的 op

例如, 通常在构建阶段创建一个图来表示和训练神经网络, 然后在执行阶段反复执行图中的训练 op

TensorFlow 支持 C, C++, Python 编程语言 目前, TensorFlow 的 Python 库更加易用,

它提供了大量的辅助函数来简化构建图的工作, 这些函数尚未被 C 和 C++ 库支持

三种语言的会话库 (session libraries) 是一致的

构建图

构建图的第一步, 是创建源 op (source op) 源 op 不需要任何输入, 例如 常量 (Constant) 源 op 的输出被传递给其它 op 做运算

Python 库中, op 构造器的返回值代表被构造出的 op 的输出, 这些返回值可以传递给其它

op 构造器作为输入

TensorFlow Python 库有一个默认图 (default graph), op 构造器可以为其增加节点 这个默认图对

许多程序来说已经足够用了 阅读 Graph 类 文档

来了解如何管理多个图

import tensorflow as tf

# 创建一个常量 op, 产生一个 1x2 矩阵 这个 op 被作为一个节点

# 加到默认图中

#

# 构造器的返回值代表该常量 op 的返回值

matrix1 = tfconstant([[3, 3]])

# 创建另外一个常量 op, 产生一个 2x1 矩阵

matrix2 = tfconstant([[2],[2]])

# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入

# 返回值 'product' 代表矩阵乘法的结果

product = tfmatmul(matrix1, matrix2)

默认图现在有三个节点, 两个 constant() op, 和一个matmul() op 为了真正进行矩阵相乘运算, 并得到矩阵乘法的

结果, 你必须在会话里启动这个图

在一个会话中启动图

构造阶段完成后, 才能启动图 启动图的第一步是创建一个 Session 对象, 如果无任何创建参数,

会话构造器将启动默认图

欲了解完整的会话 API, 请阅读Session 类

# 启动默认图

sess = tfSession()

# 调用 sess 的 'run()' 方法来执行矩阵乘法 op, 传入 'product' 作为该方法的参数

# 上面提到, 'product' 代表了矩阵乘法 op 的输出, 传入它是向方法表明, 我们希望取回

# 矩阵乘法 op 的输出

#

# 整个执行过程是自动化的, 会话负责传递 op 所需的全部输入 op 通常是并发执行的

#

# 函数调用 'run(product)' 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op) 的执行

#

# 返回值 'result' 是一个 numpy `ndarray` 对象

result = sessrun(product)

print result

# ==> [[ 12]]

# 任务完成, 关闭会话

sessclose()

Session 对象在使用完后需要关闭以释放资源 除了显式调用 close 外, 也可以使用 "with" 代码块

来自动完成关闭动作

with tfSession() as sess:

result = sessrun([product])

print result

在实现上, TensorFlow 将图形定义转换成分布式执行的 *** 作, 以充分利用可用的计算资源(如 CPU

或 GPU) 一般你不需要显式指定使用 CPU 还是 GPU, TensorFlow 能自动检测 如果检测到 GPU, TensorFlow

会尽可能地利用找到的第一个 GPU 来执行 *** 作

如果机器上有超过一个可用的 GPU, 除第一个外的其它 GPU 默认是不参与计算的 为了让 TensorFlow

使用这些 GPU, 你必须将 op 明确指派给它们执行 withDevice 语句用来指派特定的 CPU 或 GPU

执行 *** 作:

with tfSession() as sess:

with tfdevice("/gpu:1"):

matrix1 = tfconstant([[3, 3]])

matrix2 = tfconstant([[2],[2]])

product = tfmatmul(matrix1, matrix2)

设备用字符串进行标识 目前支持的设备包括:

"/cpu:0": 机器的 CPU

"/gpu:0": 机器的第一个 GPU, 如果有的话

"/gpu:1": 机器的第二个 GPU, 以此类推

阅读使用GPU章节, 了解 TensorFlow GPU 使用的更多信息

交互式使用

文档中的 Python 示例使用一个会话 Session 来

启动图, 并调用 Sessionrun() 方法执行 *** 作

为了便于使用诸如 IPython 之类的 Python 交互环境, 可以使用

InteractiveSession 代替

Session 类, 使用 Tensoreval()

和 Operationrun() 方法代替

Sessionrun() 这样可以避免使用一个变量来持有会话

# 进入一个交互式 TensorFlow 会话

import tensorflow as tf

sess = tfInteractiveSession()

x = tfVariable([10, 20])

a = tfconstant([30, 30])

# 使用初始化器 initializer op 的 run() 方法初始化 'x'

xinitializerrun()

# 增加一个减法 sub op, 从 'x' 减去 'a' 运行减法 op, 输出结果

sub = tfsub(x, a)

print subeval()

# ==> [-2 -1]

Tensor

TensorFlow 程序使用 tensor 数据结构来代表所有的数据, 计算图中, *** 作间传递的数据都是 tensor

你可以把 TensorFlow tensor 看作是一个 n 维的数组或列表 一个 tensor 包含一个静态类型 rank, 和

一个 shape 想了解 TensorFlow 是如何处理这些概念的, 参见

Rank, Shape, 和 Type

变量

Variables for more details

变量维护图执行过程中的状态信息 下面的例子演示了如何使用变量实现一个简单的计数器 参见

变量 章节了解更多细节

# 创建一个变量, 初始化为标量 0

state = tfVariable(0, name="counter")

# 创建一个 op, 其作用是使 state 增加 1

one = tfconstant(1)

new_value = tfadd(state, one)

update = tfassign(state, new_value)

# 启动图后, 变量必须先经过`初始化` (init) op 初始化,

# 首先必须增加一个`初始化` op 到图中

init_op = tfinitialize_all_variables()

# 启动图, 运行 op

with tfSession() as sess:

# 运行 'init' op

sessrun(init_op)

# 打印 'state' 的初始值

print sessrun(state)

# 运行 op, 更新 'state', 并打印 'state'

for _ in range(3):

sessrun(update)

print sessrun(state)

# 输出:

# 0

# 1

# 2

# 3

代码中 assign() *** 作是图所描绘的表达式的一部分, 正如 add() *** 作一样 所以在调用 run()

执行表达式之前, 它并不会真正执行赋值 *** 作

通常会将一个统计模型中的参数表示为一组变量 例如, 你可以将一个神经网络的权重作为某个变量存储在一个 tensor 中

在训练过程中, 通过重复运行训练图, 更新这个 tensor

Fetch

为了取回 *** 作的输出内容, 可以在使用 Session 对象的 run() 调用 执行图时, 传入一些 tensor,

这些 tensor 会帮助你取回结果 在之前的例子里, 我们只取回了单个节点 state, 但是你也可以取回多个

tensor:

input1 = tfconstant(30)

input2 = tfconstant(20)

input3 = tfconstant(50)

intermed = tfadd(input2, input3)

mul = tfmul(input1, intermed)

with tfSession() as sess:

result = sessrun([mul, intermed])

print result

# 输出:

# [array([ 21], dtype=float32), array([ 7], dtype=float32)]

需要获取的多个 tensor 值,在 op 的一次运行中一起获得(而不是逐个去获取 tensor)。

Feed

上述示例在计算图中引入了 tensor, 以常量或变量的形式存储 TensorFlow 还提供了 feed 机制, 该机制

可以临时替代图中的任意 *** 作中的 tensor 可以对图中任何 *** 作提交补丁, 直接插入一个 tensor

feed 使用一个 tensor 值临时替换一个 *** 作的输出结果 你可以提供 feed 数据作为 run() 调用的参数

feed 只在调用它的方法内有效, 方法结束, feed 就会消失 最常见的用例是将某些特殊的 *** 作指定为 "feed" *** 作,

标记的方法是使用 tfplaceholder() 为这些 *** 作创建占位符

input1 = tfplaceholder(tffloat32)

input2 = tfplaceholder(tffloat32)

output = tfmul(input1, input2)

with tfSession() as sess:

print sessrun([output], feed_dict={input1:[7], input2:[2]})

# 输出:

# [array([ 14], dtype=float32)]

for a larger-scale example of feeds

如果没有正确提供 feed, placeholder() *** 作将会产生错误

MNIST 全连通 feed 教程

(source code)

给出了一个更大规模的使用 feed 的例子

从入门级选手到专业级选手都在做的——爬虫

用Python写爬虫的教程网上一抓一大把,据我所知很多初学Python的人都是使用它编写爬虫程序。小到抓取一个小黄图网站,大到一个互联网公司的商业应用。通过Python入门爬虫比较简单易学,不需要在一开始掌握太多太基础太底层的知识就可以很快上手,而且很快可以做出成果,非常适合小白一开始想做出点看得见的东西的成就感。

除了入门,爬虫也被广泛应用到一些需要数据的公司、平台和组织,通过抓取互联网上的公开数据,来实现一些商业价值是非常常见的做法。当然这些选手的爬虫就要厉害的多了,需要处理包括路由、存储、分布式计算等很多问题,与小白的抓黄图小程序,复杂度差了很多倍。

Web程序

除了爬虫,Python也广泛应用到了Web端程序,比如你现在正在使用的知乎,主站后台就是基于Python的tornado框架,豆瓣的后台也是基于Python。除了tornado(TornadoWebServer),Python常用的Web框架还有Flask(Welcome|Flask(APython)),Django(TheWebframeworkforwithdeadlines)等等。通过上述框架,你可以很方便实现一个Web程序,比如我认识的一些朋友,就通过Python自己编写了自己的博客程序,包括之前的huphoto,我就是通过Flask实现的后台(出于版权等原因,我已经停掉了这个网站)。除了上述框架,你也可以尝试自己实现一个Web框架。

桌面程序

Python也有很多UI库,你可以很方便地完成一个GUI程序(话说我最开始接触编程的时候,就觉得写GUI好炫酷,不过搞了好久才在VC6搞出一个小程序,后来又辗转Delphi、Java等,最后接触到Python的时候,我对GUI已经不感兴趣了)。Python实现GUI的实例也不少,包括大名鼎鼎的Dropbox,就是Python实现的服务器端和客户端程序。

人工智能(AI)与机器学习

人工智能是现在非常火的一个方向,AI热潮让Python语言的未来充满了无限的潜力。现在释放出来的几个非常有影响力的AI框架,大多是Python的实现,为什么呢因为Python足够动态、具有足够性能,这是AI技术所需要的技术特点。比如基于Python的深度学习库、深度学习方向、机器学习方向、自然语言处理方向的一些网站基本都是通过Python来实现的。

机器学习,尤其是现在火爆的深度学习,其工具框架大都提供了Python接口。Python在科学计算领域一直有着较好的声誉,其简洁清晰的语法以及丰富的计算工具,深受此领域开发者喜爱。

早在深度学习以及Tensorflow等框架流行之前,Python中即有scikit-learn,能够很方便地完成几乎所有机器学习模型,从经典数据集下载到构建模型只需要简单的几行代码。配合Pandas、matplotlib等工具,能很简单地进行调整。

而Tensorflow、PyTorch、MXNet、Keras等深度学习框架更是极大地拓展了机器学习的可能。使用Keras编写一个手写数字识别的深度学习网络仅仅需要寥寥数十行代码,即可借助底层实现,方便地调用包括GPU在内的大量资源完成工作。

值得一提的是,无论什么框架,Python只是作为前端描述用的语言,实际计算则是通过底层的C/C实现。由于Python能很方便地引入和使用C/C项目和库,从而实现功能和性能上的扩展,这样的大规模计算中,让开发者更关注逻辑于数据本身,而从内存分配等繁杂工作中解放出来,是Python被广泛应用到机器学习领域的重要原因。

科学计算

Python的开发效率很高,性能要求较高的模块可以用C改写,Python调用。同时,Python可以更高层次的抽象问题,所以在科学计算领域也非常热门。包括scipy、numpy等用于科学计算的第三方库的出现,更是方便了又一定数学基础,但是计算机基础一般的朋友。

《TensorFlow技术解析与实战》(李嘉璇)电子书网盘下载免费在线阅读

链接:> 密码:wsj5  

书名:TensorFlow技术解析与实战

作者:李嘉璇

豆瓣评分:56

出版社:人民邮电出版社

出版年份:2017-6-1

页数:316

内容简介:

TensorFlow 是谷歌公司开发的深度学习框架,也是目前深度学习的主流框架之一。本书从深度学习的基础讲起,深入TensorFlow框架原理、模型构建、源代码分析和网络实现等各个方面。全书分为基础篇、实战篇和提高篇三部分。基础篇讲解人工智能的入门知识,深度学习的方法,TensorFlow的基础原理、系统架构、设计理念、编程模型、常用API、批标准化、模型的存储与加载、队列与线程,实现一个自定义 *** 作,并进行TensorFlow源代码解析,介绍卷积神经网络(CNN)和循环神经网络(RNN)的演化发展及其TensorFlow实现、TensorFlow的高级框架等知识;实战篇讲解如何用TensorFlow写一个神经网络程序并介绍TensorFlow实现各种网络(CNN、RNN和自编码网络等)并对MNIST数据集进行训练,讲解TensorFlow在人脸识别、自然语言处理、图像和语音的结合、生成式对抗网络等方面的应用;提高篇讲解TensorFlow的分布式原理、架构、模式、API,还会介绍TensorFlow XLA、TensorFlow Debugger、TensorFlow和Kubernetes结合、TensorFlowOnSpark、TensorFlow移动端应用,以及TensorFlow Serving、TensorFlow Fold和TensorFlow计算加速等其他特性。最后,附录中列出一些可供参考的公开数据集,并结合作者的项目经验介绍项目管理的一些建议。

作者简介:

李嘉璇,创建TensorFlow交流社区,活跃于国内各大技术社区,知乎编程问题回答者。致力于人工智能的研究,对深度学习框架的架构、源码分析及在不同领域的应用有浓厚兴趣。有过上百篇论文阅读和深度学习经验,处理图像、社交文本数据情感分析、数据挖掘经验,参与过基于深度学习的自动驾驶二维感知系统Hackathon竞赛,曾任职百度研发工程师。

tensorflow目前只能在linux和mac下运行,但是要在windows上运行也是有办法的。答案就是:Docker

没错,只要利用Docker的虚拟化技术就可以在windows上跑tensorflow了,废话不说,下面直接列出步骤:

1 下载Docker

在>

先学Python,tensorflow简称tf本质是一种基于Python实现的深度学习框架,想要使用tf,首先要掌握Python语言的基本语法,和python的基本原理,在掌握这些的前提下学习tf才能事半功倍,否则的话就会事倍功半。

以上就是关于轻松体验TensorFlow 第一个神经网络:基本分类(Part 1)全部的内容,包括:轻松体验TensorFlow 第一个神经网络:基本分类(Part 1)、tensorflow只能在装有gpu的机器上运行、tensorflow打印tensor的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/9657049.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存