Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >独家 | 10分钟带你上手TensorFlow实践(附代码)

独家 | 10分钟带你上手TensorFlow实践(附代码)

作者头像
数据派THU
发布于 2018-01-29 11:17:07
发布于 2018-01-29 11:17:07
1.4K0
举报
文章被收录于专栏:数据派THU数据派THU

原文标题:TensorFlow Tutorial: 10 minutes Practical TensorFlow lesson for quick learners

作者:ANKIT SACHAN

翻译:和中华

校对:程思衍

本文长度为2000字,建议阅读10分钟

通过这篇文章,你可以了解TensorFlow中最基础的几个概念,还可以学习最简单的线性回归如何在TensorFlow中完成。

这篇TensorFlow教程的目标读者是那些对机器学习有一定基本概念并且想尝试上手TensorFlow的人。首先你需要安装好TensorFlow(可以跟着本教程进行安装http://cv-tricks.com/artificial-intelligence/deep-learning/deep-learning-frameworks/tensorflow/install-tensorflow-1-0-gpu-ubuntu-14-04-aws-p2-xlarge/)。 本教程共分为两部分: 第一部分我们会配合代码实例解释基础概念, 第二部分我们会构建一个线性回归模型。

第一部分: TensorFlow基础

TensorFlow是一个用于数值计算的库,其中数据沿着图(graph)而流动。在TensorFlow中数据用n维数组表示并被称之为Tensors。而图(graph)由数据(也叫Tensors)和数学运算共同组成。

* 图中的节点: 代表数学运算

* 图中的边(edges): 代表在不同运算中流动的Tensors

TensorFlow不同于其他编程语言的另一个方面是: 在TensorFlow中无论你要构建什么,首先你需要构思整个蓝图。在创建图的时候,变量并没有被赋值。随后当已经创建了完整的图之后,还需要在一个会话(session)中去运行它,此时图中的变量才会被赋值。稍后还有更详细的介绍。

现在让我们通过动手来学习。运行Python并导入tensorflow:

1. TensorFlow中的图

图是TensorFlow的主干,所有的计算/操作/变量都位于图中。代码中发生的一切都位于TensorFlow提供的一个默认图中。可以通过如下代码访问该图:

你也可以这样得到所有操作的list:

由于现在图是空的,所以该语句的输出也是空的,即[]。

如果想打印出各操作的名称,用这条语句:

这回还是空的,等我们在图中加入了操作之后再来执行该语句。

另外,我们也可创建多个图,现在先不细讲。

2. TensorFlow会话

图是用来定义操作的,而操作必须运行在一个会话(session)中,图和会话的创建是相互独立的。可以把图想象成是设计蓝图,则会话就是它的施工地点。

图仅仅是定义了计算或者说构建了设计蓝图。 然而,除非我们在会话中运行图或者图的一部分,否则没有任何变量也没有任何值。

可以这样创建会话:

打开一个会话时,要记得在结尾处关闭。或者可以用python中的with语句块,如此一来,它将会自动被关闭:

在本教程的代码中我们会频繁使用with语句块,我们也推荐你这样操作。

3. TensorFlow中的Tensors

TF将数据保存在Tensors中,它有点像numPy包中的多维数组(尽管它们和numPy数组不同)

  • 常量

常量的值不能修改,定义方式如下:

可以看到,不同于Python之类的其他语言,这里并不能直接打印/访问常量的值,除非在会话中运行,再来试一下:

这回打印了输出结果1.0

  • 变量

即Tensors,和其它语言中的变量相似。

变量(顾名思义)和常量不同,能够存储不同的值。然而,在TF中,变量需要分别进行初始化,单独初始化每个变量效率很低。但TensorFlow提供了一次性初始化所有变量的机制,具体方法如下:

对于0.11及更早的tf版本,使用initialize_all_variables()方法:

>>>init_op = tf.initialize_all_variables()

0.12及以后的版本,使用global_variables_initializer():

>>>init_op = tf.global_variables_initializer()

上述代码会把init_op添加到TensorFlow的默认图中。

现在,试图访问刚才定义的变量b之前,先运行一下init_op,打印b输出2.0:

现在可以打印出该图中的全部操作:

这回输出了:

Const

test_var/initial_value

test_var

test_var/Assign

test_var/read

init

如你所见,之前定义过常量a, 所以它被加到了图中。同理,对于变量b而言,许多’test_var’的状态,例如test_var/initial_value,test_var/read等也被加入了图中。你可以利用TensorBoard来可视化整个网络,TensorBoard是一个用于可视化TensorFlow图和训练过程的工具。

  • 占位符

占位符,顾名思义表示占位,是指等待被初始化/填充的tensors。占位符被用于训练数据,只有当代码是在会话中运行的时候占位符才会被填充。“喂给”占位符的东西叫做feed_dict。Feed_dict是用于存储数据的(一系列)键值对:

上例输出结果为6.

4. 在TensorFlow中应用设备

TensorFlow具有非常强大的内置功能,可以在gpu, cpu或者gpu集群上运行你的代码。 它为你提供了选项,使你能选择要用来运行代码的设备。 这里不对此进行详细介绍,随后会有单独关于这个主题的教程。先来看一下TensorFlow全貌:

第二部分: 简单代码样例

这部分我们会学习线性回归的代码,首先来看几个代码中用到的TensorFlow函数:

创建随机正态分布:

使用random_normal创建服从正态分布的随机值。本例中,w是一个784*10的变量,其中的值服从标准差为0.01的正态分布。

Reduce_mean:

计算一个数组的均值

输出35

ArgMax:

类似于python中的argmax, 返回沿指定轴方向上,tensor最大值的索引

输出:array([2, 0]), 表示每一行中最大值的索引。

线性回归练习:

问题描述:线性回归中,开始时有很多数据点,我们的任务是用一条直线来拟合这些点。本例中,我们将生成100个点,并拟合他们。

  • 生成训练数据

trainX的值位于-1和1之间。

trainY是trainX的3倍外加一些干扰值。

  • 占位符

定义两个占位符,用于随后填充训练数据

  • 建模

线性回归的模型是 y_model = w * x, 我们需要计算出w的值。首先可以初始化w为0来建立一个模型, 并且定义cost函数为(Y – y_model)的平方。TensorFlow中自带了许多优化器(Optimizer),用来在每次迭代后更新梯度,从而使cost函数最小。这里我们使用GradientDescentOptimizer以0.01的学习率来训练模型, 随后会循环运行该训练操作:

  • 训练

目前为止,我们仅仅是定义好了图,还没有任何具体的计算。

TensorFlow的变量还没有被赋值。为了真正运行定义好的图,还需要创建并运行一个会话,在此之前,可以先定义初始化所有变量的操作init:

第一步,在session.run()中调用init完成初始化操作。随后我们通过向feed_dict“喂”数据来运行train_op。迭代完成之后,我们打印出最终的w值,应该接近3。

  • 练习

如果你又新建了一个会话,会输出什么结果呢?

将会输出0.0, 这就是符号计算(symbolic computation)的思想, 一旦脱离了之前的会话,所有的操作都不复存在。

希望这篇教程能帮你在学习TensorFlow之路上开一个好头, 有任何问题都可以在评论区留言提问,完整的代码可以在这里下载:

https://github.com/sankit1/cv-tricks.com

还可以跟着第二个教程继续学习TensorFlow:

http://cv-tricks.com/tensorflow-tutorial/training-convolutional-neural-network-for-image-classification/

原文链接:

http://cv-tricks.com/artificial-intelligence/deep-learning/deep-learning-frameworks/tensorflow/tensorflow-tutorial/

和中华,留德软件工程硕士。由于对机器学习感兴趣,硕士论文选择了利用遗传算法思想改进传统kmeans。目前在杭州进行大数据相关实践。加入数据派THU希望为IT同行们尽自己一份绵薄之力,也希望结交许多志趣相投的小伙伴。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据派THU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
20分钟了解TensorFlow基础
作者 | Chidume Nnamdi ???? 翻译 | linlh、余杭、通夜 编辑 | 王立鱼、约翰逊·李加薪 原文链接: https://blog.bitsrc.io/learn-t
AI研习社
2019/05/31
9360
Tensorflow基础
Tensorflow是Google推出的机器学习开源神器,对Python有着良好的语言支持,支持CPU,GPU和Google TPU等硬件,并且已经拥有了各种各样的模型和算法。目前,Tensorflow已被广泛应用于文本处理,语音识别和图像识别等多项机器学习和深度学习领域。
oYabea
2020/09/07
6840
TensorFlow基础
TensorFlow 使用图来表示计算任务. 图中的节点被称之为 op (operation 的缩写). 一个 op 获得 0 个或多个 Tensor, 执行计算, 产生 0 个或多个 Tensor. 每个 Tensor 是一个类型化的多维数组. 例如, 你可以将一小组图像集表示为一个四维浮点数数组, 这四个维度分别是 [batch, height, width, channels].
百川AI
2021/10/19
7230
TensorFlow学习笔记:6、用Tensorflow计算a=(b+c)∗(c+2)
版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/chengyuqiang/article/details/88796961
程裕强
2019/07/02
5730
TensorFlow入门:一篇机器学习教程
TensorFlow是一个由Google创建的开源软件库,用于实现机器学习和深度学习系统。这两个名称包含一系列强大的算法,它们共享一个共同的挑战——让计算机学习如何自动识别复杂模式和/或做出最佳决策。
WindCoder
2018/09/19
4.2K0
TensorFlow入门:一篇机器学习教程
TensorFlow小入门
同步微博端,代码混乱,请查看原文如下: 这篇文章是TensorFlow的入门教程。在开始阅读本文之前,请确保你会Python,并且对矩阵有一定的了解,除此之外,最好能懂一点机器学习的知识,不过如果你对机器学习一无所知也没关系,你可以从阅读这篇文章开始学起。 TensorFlow提供了丰富的接口供调用。TensorFlow的内核尽可能开放了最完备的接口,它允许你在此基础上从最底层开始开发。我们建议一般开发者可以不用从这么底层开始开发,这些底层接口更适合科研人员。TensorFlow的上层接口都是在此基础上搭建
禹都一只猫olei
2018/05/25
5820
一些TensorFlow的基本操作
TensorFlow 程序使用 tensor 数据结构来代表所有的数据, 计算图中, 操作间传递的数据都是 tensor. 你可以把 TensorFlow tensor 看作是一个 n 维的数组或列表. 一个 tensor 包含一个静态类型 rank, 和 一个 shape.
benym
2022/07/14
1980
TensorFlow入门 原
本文将初步向码农和程序媛们介绍如何使用TensorFlow进行编程。在阅读之前请先 安装TensorFlow,此外为了能够更好的理解本文的内容,阅读之前需要了解一点以下知识:
随风溜达的向日葵
2018/08/15
7690
TensorFlow入门
                                                                            原
简明机器学习教程(二)——实践:进入Tensorflow世界
经过了一年的休整,终于博客也要恢复原先坑着的系列了,《简明机器学习教程》也会恢复更新。说实在的,第二篇的原稿我其实在第一篇之后一星期就写出来了,但是后来因为原稿遗失与学业繁忙就一直拖了下来。历经一年,我对机器学习与这系列教程又有了些新的思考,所以我决定做出些许调整。首先,本系列不再单独分理论、实践篇,而是采用交织在一起的形式。其次,将matlab更换为tensorflow(python)。教程的定位依旧是面向初学者,所以会加入大篇幅的前置介绍。这篇就是为了之后内容而对tensorflow进行先行的介绍。
KAAAsS
2022/01/14
9600
简明机器学习教程(二)——实践:进入Tensorflow世界
01 TensorFlow入门(1)
文章主要讲述了如何利用TensorFlow进行深度学习,包括模型的搭建、训练、保存以及部署。同时,文章还介绍了如何使用TensorFlow进行图像分类和文本情感分析等具体应用。
MachineLP
2018/01/09
1.6K0
01 TensorFlow入门(1)
深度学习入门实战(二):用TensorFlow训练线性回归
该文章介绍了如何通过Python和Keras框架实现一个简单的深度学习模型,并使用该模型对MNIST数据集进行分类。首先,介绍了Keras是什么以及它的主要特点,然后详细讲解了如何利用Keras实现一个简单的深度学习模型。最后,通过实例演示了如何使用该模型对MNIST数据集进行分类。
serena
2017/04/19
8K2
Tensorflow从入门到精通(二):附代码实战
1.Tensor介绍 Tensor(张量)是Tensorflow中最重要的数据结构,用来表示Tensorflow程序中的所有数据。Tensor本是广泛应用在物理、数学领域中的一个物理量。那么在Tensorflow中该如何理解Tensor的概念呢? 实际上,我们可以把Tensor理解成N维矩阵(N维数组)。其中零维张量表示的是一个标量,也就是一个数;一维张量表示的是一个向量,也可以看作是一个一维数组;二维张量表示的是一个矩阵;同理,N维张量也就是N维矩阵。 在计算图模型中,操作间所传递的数据都可以看做是Te
磐创AI
2018/04/24
1.1K0
Tensorflow从入门到精通(二):附代码实战
独家 | 一文读懂TensorFlow(附代码、学习资料)
人工智能、机器学习和深度学习 在介绍TensorFlow(以下简称为TF)之前,我们首先了解一下相关背景。 TF是一种机器学习框架,而机器学习经常和人工智能,深度学习联系在一起,那么三者到底是什么关系呢? 简单来讲三者可以理解为包含于被包含的关系。其中最大的是人工智能(以下简称为AI),AI最早起源于1956年的达特茅斯会议,当时AI的几位先驱在会上展示了最早的AI程序:Logic Theorist,能够自动推导数学原理第二章前52个定理中的38个,甚至其中一个定理的证明过程比书中给出的还要优
数据派THU
2018/01/30
1.7K0
独家 | 一文读懂TensorFlow(附代码、学习资料)
深度学习_1_Tensorflow_1
# 深度学习 # 图像识别,自然语言处理 # 机器学习 深度学习 # 分类:神经网络(简单) 神经网络(深度) # 回归 图像:卷积神经网络 # 自然语言处理:循环神经网络 # cpu:运行操作系统,处理业务,计算能力不是特别突出 # gpu:专门为计算设计的 import tensorflow as tf a = tf.constant(5.0) b = tf.
Dean0731
2020/05/08
5560
Python人工智能 | 四.TensorFlow基础之Session、变量、传入值和激励函数
从本篇文章开始,作者正式开始讲解Python深度学习、神经网络及人工智能相关知识,希望您喜欢。
Eastmount
2021/12/02
6890
Python人工智能 | 四.TensorFlow基础之Session、变量、传入值和激励函数
【TF】TensorFlow本地安装实践
TensorFlow是一个开源的机器学习框架,是由Google开发的,用于构建和训练机器学习模型的工具库。它提供了丰富的功能和易于使用的接口,可用于各种机器学习任务,如图像识别、自然语言处理、推荐系统等。
Freedom123
2024/04/15
3290
[Tensorflow] TensorFlow之Hello World!(2)
TensorFlow入门的第一篇和大家聊了?graph图,op操作,node节点。对TensorFlow有了一个简单的认识,今天主要和大家分享的是TensorFlow中constant 常量, Variable变量,Placeholder占位符,Session启动图,fetches,feed等几个基本概念。 接下来我们通过一些简单的栗子分别来学习一下他们都是什么鬼。 # constant # 导入模块 import tensorflow as tf """ 怎么定义常量,常量的意思和我们平时理解的常量是一
用户1622570
2018/04/11
9960
TensorFlow基础知识
x1、x2 表示输入,w1、w2 分别是 x1 到 y 和 x2 到 y 的权重,y=x1w1+x2w2。
foochane
2019/10/14
7710
TensorFlow基础知识
三天速成 TensorFlow课件分享
该教程第一天先介绍了深度学习和机器学习的潜力与基本概念,而后便开始探讨深度学习框架 TensorFlow。首先我们将学到如何安装 TensorFlow,其实我们感觉 TensorFlow 环境配置还是相当便捷的,基本上按照官网的教程就能完成安装。随后就从「Hello TensorFlow」开始依次讲解计算图、占位符、张量等基本概念。
刘盼
2018/03/16
2K0
三天速成 TensorFlow课件分享
开刷Cs20之Tensorflow第二弹
本节学习来源斯坦福大学cs20课程,有关自学与组队学习笔记,将会放于github仓库与本公众号发布,欢迎大家star与转发,收藏!
公众号guangcity
2019/09/20
1.6K0
开刷Cs20之Tensorflow第二弹
相关推荐
20分钟了解TensorFlow基础
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档