文档章节

TensorFlow学习系列(一):初识TensorFlow

AllenOR灵感
 AllenOR灵感
发布于 2017/09/10 01:21
字数 867
阅读 3
收藏 0

这篇教程是翻译Morgan写的TensorFlow教程,作者已经授权翻译,这是原文


目录


TensorFlow学习系列(一):初识TensorFlow

TensorFlow学习系列(二):形状和动态维度

TensorFlow学习系列(三):保存/恢复和混合多个模型

TensorFlow学习系列(四):利用神经网络实现泛逼近器(universal approximator)

TensorFlow学习系列(五):如何使用队列和多线程优化输入管道


TensorFlow(TF)不像一个典型的程序,你可能习惯于写数学运算,比如 a = 2 + 2 ,然后得到 a 的结果是 4 。但是 TF 模糊了数学运算和他们实际运算结果之间的界限。在 TF 中,你得到的是一个张量(Tensor)。是不是一脸懵逼?我们举个例子,比如一个简单的加法操作,请看如下代码:

import tensorflow as tf

# Usual way to do math operation in a program

a = 2 + 2

print(a) # => 2

# TensorFlow's way

a = tf.add(2, 2)

print(a) # => Tensor("Add_1:0", shape=(), dtype=int32)

当你在 TF 中进行数学公式编写时,你必须把它当做是一种运算操作,而不是去计算某一个具体的值。在 TF 中发生的所有事,都是在会话(Session) 中进行的。所以,当你在 TF 中编写一个加法时,其实你只是设计了一个加法操作,而不是实际添加任何东西。所有的这些设计都是会在图(Graph)中产生,你会在图中保留这些计算操作和张量,而不是具体的值。


当你开始一个会话(Session),你实际上在你的程序中创建了一个新的作用域(scope),而操作就在这个作用域中发生,比如上面的加法操作。也就是说,这是你能运行和评估操作和张量的地方。当你开始执行这个操作的时候,那么你设计的操作才真正开始在现实世界中发生:张量获取真实的数值,操作进行计算,得到结果,函数收敛等等。

但是,一旦你超出你会话的范围,图就会返回一个静态的并且是相当无聊的状态。我们回归到理论,总而言之,有两个主要阶段在TF的代码中:

  • 图阶段:你能在图中设计各种数学操作。但是在这个阶段,你只能保存你自己的操作和元数据,但没有任何的有形的形式。

  • 会话和评估阶段:变量被初始化,各种函数被配置,操作被执行,中间张量和梯度被执行,等等一系列操作被执行。

一些小提示:最重要的部分是,在多个评估之间,只有变量保存它们的数据。所有其他张量都是临时的,这意味着,如果你没有添加一个合适的 feed_dict ,那么你无法访问你的训练。因为,这个 feed_dict 是一个添加变量值的张量。比如,如下代码所示:

import tensorflow as tf

p = tf.placeholder(tf.float32, shape=[], name="p")

v2 = tf.Variable(2. , name="v2")

a = tf.add(p, v2)

with tf.Session() as sess:

sess.run(tf.initialize_all_variables())

# From the moment we initiliaze variables, until the end of the Session

# We can access them

print(sess.run(v2)) # -> 2.

# On the other hand, intermediate variables has to be recalculated 

# each time you want to access its value

print(sess.run(a, feed_dict={p: 3})) # -> 5.

# Even if calculated the value of a, it's no more accessible

# the value of a has been freed off the memory

print(sess.run(a)) # Error ...


References:

官网

本文转载自:http://www.jianshu.com/p/86f2a252581a

共有 人打赏支持
AllenOR灵感
粉丝 10
博文 2634
码字总数 82983
作品 0
程序员
程序员精选:TensorFlow和ML前5名的课程

如果你对人工智能、数据科学和机器学习感到好奇,那么我相信你已经听说过Google的机器学习API ——TensorFlow,他们已经用它来为Google搜索开发Rank Brain算法。TensorFlow是最受欢迎的机器学...

【方向】
08/25
0
0
史上最全TensorFlow学习资源汇总

来源 悦动智能(公众号ID:aibbtcom) 本篇文章将为大家总结TensorFlow纯干货学习资源,非常适合新手学习,建议大家收藏。 ▌一 、TensorFlow教程资源 1)适合初学者的TensorFlow教程和代码示...

悦动智能
04/12
0
0
1- OpenCV+TensorFlow 入门人工智能图像处理-课程介绍

人工智能最火的两个方向,自然语言处理和计算机视觉 OpenCV的图像处理 TensorFlow的使用 供需关系理论,有需求所以才有提供 招聘网站: 图像算法两万以上 都需要的技能: OpenCV TensorFlow 人...

天涯明月笙
04/04
0
0
【干货】史上最全的Tensorflow学习资源汇总,速藏!

一 、Tensorflow教程资源: 1)适合初学者的Tensorflow教程和代码示例:(https://github.com/aymericdamien/TensorFlow-Examples)该教程不光提供了一些经典的数据集,更是从实现最简单的“Hel...

技术小能手
04/16
0
0
【AI实战】快速掌握Tensorflow(一):基本操作

Tensorflow是Google开源的深度学习框架,来自于Google Brain研究项目,在Google第一代分布式机器学习框架DistBelief的基础上发展起来。Tensorflow于2015年11月在GitHub上开源,在2016年4月补...

雪饼
08/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
2
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
7
3
java -jar运行内存设置

java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX:CompressedClassSpaceSize=6...

李玉长
今天
4
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

冯文议
今天
2
0
RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部