文档章节

【AI实战】快速掌握Tensorflow(一):基本操作

雪饼
 雪饼
发布于 2018/08/18 23:52
字数 1925
阅读 2275
收藏 20

Tensorflow是Google开源的深度学习框架,来自于Google Brain研究项目,在Google第一代分布式机器学习框架DistBelief的基础上发展起来。Tensorflow于2015年11月在GitHub上开源,在2016年4月补充了分布式版本,最新版本为1.10,2018年下半年将发布Tensorflow 2.0预览版。Tensorflow目前仍处于快速开发迭代中,不断推出新功能和优化性能,现已成为当今世界上最受欢迎的开源机器学习框架,是学习研究AI的必备神器。

接下来,将推出“快速掌握Tensorflow”的系列文章,带你快速入门掌握Tensorflow。

1、Tensorflow是什么?
Tensorflow是当前最流行的深度学习框架,它既是一个实现深度学习算法的接口,也是执行深度学习算法的框架。Tensorflow前端支持Python、C++、Java、Go等语言,后端使用C++、CUDA等写成,可在众多系统上运行,包括Windows、Mac、Linux、Android、IOS等。
Tensorflow的官方网址为  http://www.tensorflow.org
Tensorflow的GitHub网址为 https://github.com/tensorflow/tensorflow

2、Tensorflow有什么特点?
Tensorflow最主要的特点是使用数据流图(data flow graphs)进行数值计算,由节点(Nodes)和边(Edges)组成,其中,节点(Nodes)表示数据操作,边(Edges)表示节点间相互通信的多维数组,这种在边与边之间流动(flow)的数据也被称为张量(tensor),故而得名Tensorflow。如下图所示:
Tensors Flowing

【注意】在深度学习里面,数据流图都是自下往上的,逐层递进,而平常普通流程图大多是自上往下呈现,刚开始看数据流图会可能有些不太习惯

Tensorflow不是一个严格的“神经网络”库,不只是用于深度学习,只要能将计算模型表示为数据流图形式,就可以使用Tensorflow进行计算。

3、安装Tensorflow
在【AI实战】系列文章中,已经介绍过了AI基础环境搭建:Ubuntu + Anaconda + Tensorflow + GPU + PyCharm,在此就不再赘述。详见文章:AI基础环境搭建
本系列文章的代码均基于Python 3.6和Tensorflow 1.10。

4、Hello World
程序员从“Hello World”开始。在安装好Tensorflow之后,写个Hello World试试安装是否成功。代码如下:

import tensorflow as tf
hello=tf.constant(‘Hello, TensorFlow!’)
sess=tf.Session()
print(sess.run(hello))

如果成功输出“Hello,TensorFlow!”,则表明TensorFlow安装成功。

从这个Hello World代码可以看出,
(1)要使用tensorflow,先要导入tensorflow库,使用import tensorflow导入,一般会简写为tf
(2)要执行tensorflow,先要创建Session(会话)。Session是用户使用tensorflow时的交互接口,用以创建计算图,然后通过Session的run方法执行计算图。

5、学会基本操作
TensorFlow的数据流图由节点(Nodes)和边(Edges)组成,下面从节点(操作)和边(张量)来介绍TensorFlow的基本操作。
(1)张量
张量是TensorFlow的主要数据结构,用于操作计算图。
一个张量(Tensor)可以简单地理解为任意维的数组,张量的秩表示其维度数量。张量的秩不同,名称也不相同。
a、标量:维度为0的Tensor,也就是一个实数
b、向量:维度为1的Tensor
c、矩阵:维度为2的Tensor
d、张量:维度达到及超过3的Tensor

创建张量有以下主要4种方法:
a、创建固定张量
创建常数张量:
constant_ts=tf.constant([1,2,3,4,5])


创建零张量:
zero_ts=tf.zeros([row_dim, col_dim])


创建单位张量:
ones_ts=tf.ones([row_dim,col_dim])


创建张量,并用常数填充:
filled_ts=tf.fill([row_dim,col_dim],123)

b、创建相似形状张量
创建相似的零张量:
zeros_like=tf.zeros_like(constant_ts)


创建相似的单位张量:
ones_like=tf.ones_like(constant_ts)

c、创建序列张量
指定起止范围
linear_ts=tf.linspace(start=0, stop=2, num=6)
结果返回[0.0,0.4,0.8,1.2,1.6,2.0],注意该结果包括stop值


指定增量
seq_ts=tf.range(start=4, limit=16, delta=4)
结果返回[4,8,12],注意该结果不包括stop值

d、随机张量
生成均匀分布的随机数
randunif_ts=tf.random_uniform([row_dim,col_dim],minval=0,maxval=1)
结果返回从minval(包含)到maxval(不包含)的均匀分布的随机数


生成正态分布的随机数
randnorm_ts=tf.random_normal([row_dim,col_dim],mean=0.0,stddev=1.0)
其中mean表示平均值,stddev表示标准差

(2)占位符和变量
占位符和变量是使用TensorFlow计算图的关键工具,两者是有区别的
a、变量:是TensorFlow算法中的参数,通过调整这些变量的状态来优化模型算法;
b、占位符:是TensorFlow对象,用于表示输入输出数据的格式,允许传入指定类型和形状的数据。

创建变量
通过tf.Variable()函数封装张量来创建变量,例如:
my_var=tf.Variable(tf.zeros([row_dim,col_dim]))

【注意】声明变量后需要进行初始化才能使用,最常使用以下函数一次性初始化所有变量,使用方式如下:
init_op=tf.global_variables_initializer()

创建占位符
占位符仅仅是声明数据位置,也即先占个位,后面在会话中通过feed_dict传入具体的数据。示例代码如下:

a=tf.placeholder(tf.float32,shape=[1,2])
b=tf.placeholder(tf.float32,shape=[1,2])
adder_node=a+b   #这里的“+”是tf.add(a,b)的简洁表达
print(sess.run(adder_node,feed_dict={a:[2,4],b:[5.2,8]}))

输出结果为[7.2 12]

(3)操作
TensorFlow张量的加、减、乘、除、取模的基本操作是:add()、sub()、mul()、div()、mod()。例如:

a=tf.placeholder(tf.float32,shape=[1,2])
b=tf.placeholder(tf.float32,shape=[1,2])
adder_node=tf.add(a,b)
print(sess.run(adder_node,feed_dict={a:[2,4],b:[5.2,8]}))

输出结果为[7.2 12]

其中,乘法、除法有比较特殊之处,如果是要对浮点数进行整除,则使用floordiv();如果是要计算两个张量间的点积,则使用cross()。
下面列出常用的数学函数列表:

通过以上的简单介绍,相信你已了解了TensorFlow的特点和基本的操作方式,接下来,我们将结合案例继续深入介绍TensorFlow,敬请期待!

 

欢迎关注本人的微信公众号“大数据与人工智能Lab”(BigdataAILab),获取更多信息

 

推荐相关阅读

© 著作权归作者所有

雪饼

雪饼

粉丝 412
博文 61
码字总数 134328
作品 0
广州
私信 提问
【AI实战】快速掌握TensorFlow(二):计算图、会话

在前面的文章中,我们已经完成了AI基础环境的搭建(见文章:Ubuntu + Anaconda + TensorFlow + GPU + PyCharm搭建AI基础环境),以及初步了解了TensorFlow的特点和基本操作(见文章:快速掌握...

雪饼
2018/08/20
1K
1
【AI实战】快速掌握TensorFlow(三):激励函数

到现在我们已经了解了TensorFlow的特点和基本操作(见文章:快速掌握TensorFlow(一)),以及TensorFlow计算图、会话的操作(见文章:快速掌握TensorFlow(二)),接下来我们将继续学习掌握...

雪饼
2018/08/30
1K
0
【AI实战】快速掌握TensorFlow(四):损失函数

在前面的文章中,我们已经学习了TensorFlow激励函数的操作使用方法(见文章:快速掌握TensorFlow(三)),今天我们将继续学习TensorFlow。 本文主要是学习掌握TensorFlow的损失函数。 一、什...

雪饼
2018/09/02
2.3K
0
【AI实战】手把手教你训练自己的目标检测模型(SSD篇)

目标检测是AI的一项重要应用,通过目标检测模型能在图像中把人、动物、汽车、飞机等目标物体检测出来,甚至还能将物体的轮廓描绘出来,就像下面这张图,是不是很酷炫呢,嘿嘿 在动手训练自己...

雪饼
2018/08/14
11.1K
25
【AI实战】训练第一个AI模型:MNIST手写数字识别模型

在上篇文章中,我们已经把AI的基础环境搭建好了(见文章:Ubuntu + conda + tensorflow + GPU + pycharm搭建AI基础环境),接下来将基于tensorflow训练第一个AI模型:MNIST手写数字识别模型。...

雪饼
2018/08/11
3.7K
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.4K
15
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
41
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部