文档章节

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

AllenOR灵感
 AllenOR灵感
发布于 2017/09/10 01:21
字数 867
阅读 4
收藏 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灵感
粉丝 11
博文 2635
码字总数 83001
作品 0
程序员
私信 提问
史上最全TensorFlow学习资源汇总

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

悦动智能
04/12
0
0
TensorFlow 2.0 的核心功能将是“Eager Execution”

TensorFlow 2.0 是谷歌开源机器学习框架的下一个主要版本,将于 2018 年末推出其首个测试版。TensorFlow 是 Google 对机器学习和数据科学领域的贡献,是快速开发神经网络的一般框架。 尽管 ...

达尔文
08/22
2.9K
5
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
程序员精选:TensorFlow和ML前5名的课程

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

【方向】
08/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python自然语言处理快速入门2常见的NLP操作

在本章中,我们将讨论我们文本数据进行的一些常见数据预处理操作,以适配典型的机器学习算法,如贝叶斯、决策树,逻辑回归等等。这些算法都只适用于数字向量,而不是文本。 那么我们如何将文...

python测试开发人工智能安全
17分钟前
0
0
OSChina 周一乱弹 —— 温柔的人应该这样

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @clouddyy :#每日一歌# 《フィクション-sumika》 《フィクション-sumika》 手机党少年们想听歌,请使劲儿戳(这里) 假期时间干嘛去, @for...

小小编辑
35分钟前
9
4
[LintCode] Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)

描述 设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。 如何反序列化或序列化二叉树是没有限制的,你...

honeymose
今天
6
0
java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
26
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部