更新:2017.2.27
因为tensorflow1.0出来了,很多不兼容,所以这部分更新了一下。以适应tensorflow1.0
更新:2019.3.7
因为tensorflow2.0出来了,又带来了很多新的不兼容的东西,因此新的版本全部基于tensorflow2
背景直接不多说了,一般学习已经开始学习tensorflow的都应该都知道tensorflow的背景了。所以这里直接略过啦。
在之前的博客里面有详细的tensorflow的安装和配置。相对caffe来说,还是比较简单的。不熟悉的看这里 tensorflow安装
这里直接翻译的官方文档的介绍,TensorFlow 使用图来表示计算任务. 图中的节点被称之为 op (operation 的缩写). 一个 op获得 0 个或多个 Tensor , 执行计算, 产生 0 个或多个 Tensor . 每个 Tensor 是一个类型化的多维数组.tensor也是tensorflow中的核心数据类型。
一个 TensorFlow 图(graph)描述了计算的过程. 为了进行计算, 图必须在会话(session)里被启动. 会话将图的op分发到诸如 CPU 或 GPU 之类的 设备 上, 同时提供执行 op 的方法. 这些方法执行后, 将产生的 tensor 返回.
TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段.
上面的都是之前的老内容,需要了解一点点,但是不是以后编写tensorflow代码的核心了,现在编写代码是基于默认是类似于pytorch的所见所得的方式。
前面说了那么多是很抽象的,这里给出一个基本例子,这个例子现在都可以不用懂其中的含义。现在你只要知道,这个例子能够跑出结果,和这创建两个例子最基本的流程就行了。后面的文章会详细分析。
首先要放在这里的例子是超级经典的Hello World啦,没有hello world的教程都是耍流氓对吧。
from __future__ import print_function,division
import tensorflow as tf
#define the graph
info=tf.constant("hello,world")
a=tf.constant(10)
b=tf.constant(20)
c=tf.add(a,b)
print("info:",info)
print("type of info:",type(info))
print(info.numpy())
print("type of info.numpy()",type(info.numpy()))
print("\n\n")
print("a:",a)
print("type of a:",type(a))
print(a.numpy())
print("type of a.numpy()",type(a.numpy()))
print("b:",b)
print("c:",c)
结果:
info: tf.Tensor(b'hello,world', shape=(), dtype=string)
type of info:
b'hello,world'
type of info.numpy()
a: tf.Tensor(10, shape=(), dtype=int32)
type of a:
10
type of a.numpy()
b: tf.Tensor(20, shape=(), dtype=int32)
c: tf.Tensor(30, shape=(), dtype=int32)
这里需要把一些出现了的你可能会迷糊的“关键字”挑出来。分别是constant
,tf.add
,这些。但是你现在并不需要马上理解他们是什么挑出来的原因就是这些事调用的tensorflow的API,你现在不用知道是什么,虽然你可能已经猜出来他们的意义了。
然后很重要的就是,虽然我们心里面有了图的概念,但是在tensorflow2.0之后就默认使用eager执行的方式了,即可见即可得的方式。我们暂时把图运行的方式抛到脑后。