澳门威利斯人_威利斯人娱乐「手机版」

来自 办公软件 2020-02-10 15:12 的文章
当前位置: 澳门威利斯人 > 办公软件 > 正文

新手入门笔记,Tensorflow基本用法

尽管可能有些人讲 caffe 更符合图像,mxnet 功效更加高之类,但事实上那个框架一通百通,唯独语法不一样而已,所以大家不用在这里郁结过多。那么让大家从tensorflow初始吧。

基本概念

动用TensorFlow前必得掌握的基本概念:
图(Graph):图描述了总计的进度,TensorFlow使用图来代表总计任务。
张量(Tensor):TensorFlow使用tensor表示数据。种种Tensor是二个类型化的多维数组。
操作(op):图中的节点被称作op(operation的缩写),一个op获得0个或多个Tensor,执行总括,产生0个或五个Tensor。
对话(Session):图必须在称为“会话”的左右文中试行。会话将图的op分发到诸如CPU或GPU之类的道具上推行。
变量(Variable):运维进度中得以被转移,用于爱惜状态。

通常会将多个总结模型中的参数表示为豆蔻梢头组变量. 举例, 你能够将一个神经互联网的权重作为有个别变量存款和储蓄在三个 tensor 中. 在教练进度中, 通过重国民党的新生活运动行练习图, 更新那一个 tensor.

3.9 Feed

上述示范在总括图中引进了 tensor,以常量或变量的花样积存。TensorFlow 还提供了 feed 机制,该机制得以有的时候代替图中的大肆操作中的 tensor 能够对图中别的操作提交补丁,直接插入二个 tensor。

feed 使用二个 tensor 值有时替换叁个操作的出口结果。你可以提供 feed 数据作为 run(State of Qatar 调用的参数。feed 只在调用它的法子内一蹴而就,方法结束,feed 就能够磨灭。

最普及的用例是将或多或少特殊的操作钦点为 "feed" 操作,标志的艺术是接受tf.placeholder(卡塔尔国 为这几个操作创造占位符。

import tensorflow as tfinput1 = tf.placeholder(tf.float32)input2 = tf.placeholder(tf.float32)output = tf.multiply(input1, input2)with tf.Session() as sess: print sess.run([output], feed_dict={input1:[7.], input2:[2.]})# 输出:# [array([ 14.], dtype=float32)]

例如未有准确提供 feed,placeholder(卡塔尔 操作将会产生错误。

  1. TensorFlow 英语官方网站
  2. TensorFlow 官方GitHub仓库

假让你想要学习更加的多机器学习课程,点击学习路线就可以,照着路线学习~

下载及安装

不仅能够直接行使二进制造进度序包也足以从github源码Cook隆源码编译安装。

要求
TensorFlow 提供的Python API支持Python2.7和Python3.3

GPU版本的二进制造进度序包只可以接纳Cuda Toolkit8.0 和 cuDNN v5。假设您采用的是此外版本(Cuda toolkit >= 7.0 and cuDNN >= v3),那您就必须使用源码重新编译安装。

引进两种Linux平台的设置情势:

  • Pip install: 大概会进步你前面设置过的Python包,对您机器上的Python程序变成影响。
  • Anaconda install:把TensorFlow安装在Anaconda提供的条件中,不会影响别的Python程序。
  • Installing from sources:把TensorFlow源码创设设成贰个pip wheel 文件,使用pip工具安装它。

Pip installation
Pip是三个用来设置和拘留Python软件包的包管理体系。

设置pip(要是已经设置,能够跳过)
# Ubuntu/Linux 64-bit

$ sudo apt-get install python-pip python-dev

平素行使pip安装TensorFlow

$ pip install tensorflow

假诺提醒找不到对应的包,使用

pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0rc1-cp27-none-linux_x86_64.whl

设置GPU援助的版本:
# Requires CUDA toolkit 8.0 and CuDNN v5. 其余版本,参照他事他说加以侦察上面包车型地铁“Installing from sources”

$ pip install tensorflow-gpu

设若提醒找不到相应的包,使用

pip install --ignore-installed --upgrade TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc1-cp27-none-linux_x86_64.whl

注意:如若是从三个较老的版本(TensorFlow<0.7.1)进行晋级换代,须要首先卸载早先的TensorFlow和protobuf使用:pip uninstall

Anaconda installation
Anaconda是一个Python发行版,包蕴大气的数字和不易总括包。使用“conda”来管理软件包,况且具备自个儿的碰到类别。安装步骤
安装Anaconda
创建conda环境
激活conda遭遇,在里面设置TensorFlow
每一回使用TensorFlow时,激活conda景况

Anaconda具体的安装和行使能够参照:

Installing from sources

从源码构建TensorFlow,具体的步骤参照他事他说加以考查:

人机联作式使用

文书档案中的 Python 示例使用叁个会话Session来 启动图, 并调用Session.run()艺术实行操作.

为了便利使用诸如IPython等等的 Python 交互作用蒙受, 能够接纳InteractiveSession代替Session类, 使用Tensor.eval()和Operation.run()方法取代Session.run(卡塔尔国. 那样能够幸免选择叁个变量来具备会话.

# 步入三位机联作式 TensorFlow 会话.

import tensorflow as tf 

sess = tf.InteractiveSession()

x = tf.Variable([1.0,2.0])

a = tf.constant([3.0,3.0])

# 使用初阶化器 initializer op 的 run(卡塔尔(قطر‎ 方法伊始化 'x'

x.initializer.run()

# 增加二个减法 sub op, 从 'x' 减去 'a'. 运转减法 op, 输出结果

sub = tf.sub(x, a)

print(sub.eval())

# ==> [-2. -1.]

  • 接纳图 来代表总计职责
  • 在被号称 会话 的光景文 中试行图
  • 使用 tensor 表示数据
  • 透过 变量 维护状态
  • 行使 feed 和 fetch 可以为随便的操作(arbitrary operation卡塔尔(قطر‎赋值或然从当中获取数据

Tensor

Tensorflow使用tensor数据构造来代表享有的数码。总结图的操作之间仅能传递tensor。你能够把tensor当作多维数组或列表。每一个tensor包蕴有一个静态类型,多少个rank和两个shape。想打听更加多TensorFlow是何许操作那么些概念的,参照他事他说加以考察Rank, Shape, and Type

Feed

上述示范在统计图中引进了 tensor, 以常量或变量的花样存款和储蓄. TensorFlow 还提供了 feed 机制, 该机制得以不常代替图中的任性操作中的 tensor .能够对图中别的操作提交补丁, 直接插入叁个 tensor.

feed 使用三个 tensor 值不常替换多少个操作的输出结果. 你能够提供 feed 数据作为run(State of Qatar调用的参数. feed 只在调用它的不二等秘书籍内立见作用, 方法截止, feed 就能够消失.

3.7 变量

变量维护图实践进度中的状态音讯。

上边包车型大巴事例演示了如何运用变量达成二个简易的流速計。

import tensorflow as tf# 创建一个变量, 初始化为标量 0.state = tf.Variable(0, name="counter")# 创建一个 op, 其作用是使 state 增加 1one = tf.constantnew_value = tf.add(state, one)update = tf.assign(state, new_value)# 启动图后, 变量必须先经过`初始化`  op 初始化,# 首先必须增加一个`初始化` op 到图中.init_op = tf.initialize_all_variables()# 启动图, 运行 opwith tf.Session() as sess: # 运行 'init' op sess.run # 打印 'state' 的初始值 print sess.run # 运行 op, 更新 'state', 并打印 'state' for _ in range: sess.run print sess.run# 输出:# 0# 1# 2# 3

代码中 assign(State of Qatar 操作是图所勾画的表明式的黄金时代局地,正如 add(卡塔尔国操作同样。所以在调用 run(卡塔尔(قطر‎ 试行表明式在此之前,它并不会真的实施赋值操作。

经常来讲会将一个总计模型中的参数表示为生机勃勃组变量,比如,你能够将三个神经网络的权重作为某些变量存款和储蓄在三个tensor 中,在教练进程中,通过重国民党的新生活运动行训练图,更新这几个 tensor。

着力选用

主导采纳

行使 TensorFlow, 你不得不掌握 TensorFlow:

             使用图 (graphState of Qatar 来代表总结职务.

             在被称为会话 (Session卡塔尔国的左右文 (context卡塔尔 中试行图.

             使用 张量tensor 代表数据.

             通过变量 (Variable卡塔尔(قطر‎维护状态.

              使用 feed 和 fetch 可感觉专擅的操作(arbitrary operation)赋值恐怕从内部赢得数据.

图片 1数据流图

介绍

TensorFlow™ 是三个施用数据流图(data flow graphs),用于数值计算的开源软件库。TensorFlow 最早由Google大脑小组(附归属谷歌机器智能探讨部门)的斟酌员和程序员们付出出来,用于机器学习和纵深神经互联网方面包车型地铁研讨,但以此种类的通用性使其也可普遍用于其余计量领域。它是Google依赖DistBelief举办研究开发的第二代智能AI学习体系。2016年7月9日,谷歌(Google卡塔尔(قطر‎公布人工智能种类TensorFlow并公布开源。

最分布的用例是将或多或少特殊的操作钦赐为 "feed" 操作, 标志的方法是选取 tf.placeholder(卡塔尔(قطر‎ 为这么些操作创制占位符.

图片 2

打字与印刷结果为:

[20]

[10]

案例来自官方网站

若是想要查看完整内容,点击教程【基于TensorFlow完结卷积神经互连网】就可以~

变量

变量维持图总括进度中的状态音讯。上边包车型大巴例子演示了哪些运用变量作为三个简练的计数器。

# Create a Variable, that will be initialized to the scalar value 0.
state = tf.Variable(0, name="counter")

# Create an Op to add one to `state`.

one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)

# Variables must be initialized by running an `init` Op after having
# launched the graph. We first have to add the `init` Op to the graph.
init_op = tf.global_variables_initializer()

# Launch the graph and run the ops.
with tf.Session() as sess:
# Run the 'init' op
sess.run(init_op)
# Print the initial value of 'state'
print(sess.run(state))
# Run the op that updates 'state' and print 'state'.
for _ in range(3):
sess.run(update)
print(sess.run(state))

# output:

# 0
# 1
# 2
# 3

平时来讲能够将八个总结模型中的参数表示为生龙活虎组变量。比如,你能够将二个神经网络的权重当做二个tensor存款和储蓄在变量中。在锻练图的再度运转进程中去立异那一个tensor。

构建图

营造图的首先步, 是创立源 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 = tf.constant([[3.,3.]])

# 创设此外三个常量 op, 产生一个 2x1 矩阵.

matrix2 = tf.constant([[2.],[2.]])

# 成立叁个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.

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

product = tf.matmul(matrix1, matrix2)

暗中认可图以后有八个节点, 两个constant(State of Qatarop, 和三个matmul(卡塔尔国op. 为了真正开展矩阵相乘运算, 并获得矩阵乘法的 结果, 你一定要在对话里运维那一个图.

在四个会话中运转图

架构阶段落成后, 技能开发银行图. 运营图的首先步是创建三个Session对象, 假诺无别的创立参数, 会话布局器将运行暗中认可图.

欲驾驭完整的对话 API, 请阅读Session 类.

# 运转暗中同意图.

sess = tf.Session()

# 调用 sess 的 'run(卡塔尔国' 方法来进行矩阵乘法 op, 传入 'product' 作为该措施的参数.

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

# 矩阵乘法 op 的输出.

## 整个执行进度是自动化的, 会话负担传递 op 所需的全套输入. op 日常是出新实践的.

## 函数调用 'run(product卡塔尔' 触发了图中五个 op (多个常量 op 和一个矩阵乘法 op卡塔尔(قطر‎ 的执行.

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

result = sess.run(product)

 print(result)

# ==> [[ 12.]]

# 任务成功, 关闭会话.

sess.close()

Session对象在动用完后须求关闭以释放能源. 除了显式调用 close 外, 也能够使用 "with" 代码块 来自动完毕关闭动作.

withtf.Session()  as  sess:  

           result = sess.run([product])

           print(result)

在落到实处上, TensorFlow 将图纸定义调换来布满式试行的操作, 以充裕利用可用的简政放权财富(如 CPU 或 GPUState of Qatar. 经常你没有必要显式钦定使用 CPU 照旧 GPU, TensorFlow 能自动物检疫查评定. 尽管检验到 GPU, TensorFlow 会尽大概地利用找到的第三个 GPU 来推行操作.

要是机器上有超越一个可用的 GPU, 除第二个外的别的 GPU 暗中认可是不到场计算的. 为了让 TensorFlow 使用那些 GPU, 你必得将 op 鲜明支使给它们实践.with...Device语句用来打发特定的 CPU 或 GPU 推行操作:

with tf.Session() as sess:

      with tf.device("/gpu:1"):    

            matrix1 = tf.constant([[3.,3.]])   

            matrix2 = tf.constant([[2.],[2.]])    

            product = tf.matmul(matrix1, matrix2)    ...

器械用字符串实行标记. 前段时间辅助的道具包含:

"/cpu:0": 机器的 CPU.

"/gpu:0": 机器的率先个 GPU, 假设有的话.

"/gpu:1": 机器的第三个 GPU, 就那样推算.

阅读使用GPU章节, 精晓 TensorFlow GPU 使用的越来越多新闻.

接收 TensorFlow,你不得不精通 TensorFlow:

计算图(The computation graph)

Tensorflow程序平常被公司成一个构建阶段和叁个进行等第。在创设阶段,op的进行步骤被描述成三个图。在实施品级,使用会话实施图中的op。

计算图

TensorFlow 程序平日被集团成二个营造阶段和三个实施品级. 在创设阶段, op 的推行步骤 被描述成几个图. 在进行等第, 使用会话试行施行图中的 op.

举个例子说, 平常在营造阶段创立三个图来代表和教练神经网络, 然后在实行等第往往推行图中的演习 op.

TensorFlow 援助 C, C , Python 编程语言. 近些日子, TensorFlow 的 Python 库特别易用, 它提供了大量的赞助函数来简化创设图的做事, 这个函数还未被 C 和 C 库协理.

三种语言的对话库 (session librariesState of Qatar 是同等的.

TensorFlow 未有可过分问责地能被确定为神经互联网中最佳用的库之风度翩翩,它擅长的职务正是教练深度神经互连网。通过应用 TensorFlow 我们就能够便捷的入井神经互连网,大大收缩深度学习(也正是深浅神经互联网)的开拓开支和支出难度;TensorFlow 的开源性让全部人都能动用而且保养、 加强它,使它能便捷更新, 发展。

启动图

布局阶段完毕后,才具在对话中运营图。运行图的率先步是创建贰个Session对象。若无其余参数,会话结构器将开发银行默许图。

# 启动默认图.
sess = tf.Session()

# 调用 sess 的 'run()' 方法来执行矩阵乘法 op, 传入 'product' 作为该方法的参数.
# 上面提到, 'product' 代表了矩阵乘法 op 的输出, 传入它是向方法表明, 我们希望取回
# 矩阵乘法 op 的输出.
#
# 整个执行过程是自动化的, 会话负责传递 op 所需的全部输入. op 通常是并发执行的.
#
# 函数调用 'run(product)' 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op) 的执行.
#
# 返回值 'result' 是一个 numpy `ndarray` 对象.
result = sess.run(product)
print result
# ==> [[ 12.]]

# 任务完成, 关闭会话.
sess.close()

Session对象在利用到位或索要关闭以自由能源。除了展示调用close外,也足以运用“with”代码块来机关完成关闭动作。

with tf.Session() as sess:
result = sess.run([product])
print result

Tensorflow的贯彻上,会把图转变来可布满式试行的操作,以丰硕利用总结能源(举个例子CPU或GPU)。经常情况下,你无需出示指利用CPU只怕GPU。TensorFlow能自动物检疫验,即使检查评定到GPU,TensorFlow会使用第多个GPU来实施操作。

只要机器上有五个GPU,除第三个GPU外的此外GPU是不参加计算的,为了利用那些GPU,你必需将op明显支使给他们实施。with…Device语句用来打发特定的CPU或GPU推行操作:

with tf.Session() as sess:
with tf.device("/gpu:1"):
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)
...

设施用字符串实行标志. 近年来协理的配备富含:
“/cpu:0”: 机器的 CPU.
“/gpu:0”: 机器的首先个 GPU, 纵然有的话.
“/gpu:1”: 机器的第叁个 GPU, 就那样推算.

Tensor

TensorFlow 程序行使 tensor 数据构造来表示全数的数目, 总括图中, 操作间传递的数码都是 tensor. 你能够把 TensorFlow tensor 看作是叁个 n 维的数组或列表. 四个 tensor 富含一个静态类型 rank和 三个 shape. 想打听 TensorFlow 是怎么着管理这么些概念的, 参见Rank, Shape, 和 Type.

下面动图展示了 TensorFlow 数据管理流程:

TensorFlow名字的来自

其取名来源于本身的规律,Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的简政放权。Tensorflow运行进程正是张量从图的风流倜傥端流动到另一端的总括进度。张量从图中流过的直观图像是以此工具取名称叫“TensorFlow”的原因。

变量

变量维护图施行进度中的状态音讯. 上面包车型大巴例证演示了怎么着使用变量达成一个归纳的流速计. 参见变量章节领会越多细节.

# 创设一个变量, 开首化为标量 0.

state = tf.Variable(0, name="counter")

# 创制多少个 op, 其功能是使 state 扩充 1

one = tf.constant(1)

new_value = tf.add(state, one)

update = tf.assign(state, new_value)

# 运转图后, 变量必需先通过`初始化` (init) op 初始化,

# 首先必得增添叁个`初始化` op 到图中.

init_op = tf.initialize_all_variables()

# 启动图, 运行 op

with  tf.Session()  as  sess:

        # 运行 'init' op 

        sess.run(init_op)

# 打字与印刷 'state' 的伊始值

print(sess.run(state))

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

for _ in range(3):   

         sess.run(update)

         print(sess.run(state))

# 输出:# 0# 1# 2# 3

代码中assign(卡塔尔(قطر‎操作是图所勾画的表明式的大器晚成有些, 正如add(卡塔尔操作相仿. 所以在调用run(State of Qatar实行表明式在此之前, 它并不会真正进行赋值操作.

本文由澳门威利斯人发布于办公软件,转载请注明出处:新手入门笔记,Tensorflow基本用法

关键词: 澳门威利斯人 TensorFlow 神经网络 结构 人工智能