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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CoderPai/article/details/68952246

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


目录


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

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

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

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

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

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:

官网


如果觉得内容有用,帮助多多分享哦 :)

长按或者扫描如下二维码,关注 “CoderPai” 微信号(coderpai)。添加底部的 coderpai 小助手,添加小助手时,请备注 “算法” 二字,小助手会拉你进算法群。如果你想进入 AI 实战群,那么请备注 “AI”,小助手会拉你进AI实战群。

微信公众号

猜你喜欢

转载自blog.csdn.net/CoderPai/article/details/68952246