TensorFlow

Tensorflow是一个开源软件库,它使用数据流图的形式进行数值计算。

什么是数据流图(Data Flow Graph)

图片描述

  • 节点(Nodes):表示数学运算操作符
  • 边(Edges):用于传送节点之间的多维数组,即张量。

安装TensorFlow

  • CPU版本:pip install --upgrade tensorflow
  • GPU版本:pip install --upgrade tensorflow-gpu

检查安装以及版本

>>> import tensorflow as tf
>>> tf.__version__
'1.3.0'

利用TensorFlow打印‘Hello World!’

# 创建一个constant运算符(op)
# 这个op,作为一个node,添加到graph中
hello = tf.constant('Hello, TensorFlow!')

# 启动TF进程(session)
sess = tf.Session()

# 运行op,并输出结果
print(sess.run(hello))
b'Hello, TensorFlow!'

b'String': 'b'表示字节符。

计算图(Computational Graph)

图片描述

# 1.使用TensorFlow运算符op搭建graph
node1 = tf.constant(3.0, tf.float32)
node2 = tf.constant(4.0)
node3 = tf.add(node1, node2)

# 2.丢入数据,并运行graph:sess.run(op)
# 3.自动更新graph中的变量并返回
sess = tf.Session()
print('sess.run(node1, node2):', sess.run([node1, node2]))
print('sess.run(node3):', sess.run(node3))
sess.run(node1, node2): [3.0, 4.0]
sess.run(node3): 7.0

TensorFlow运行机制

  • 1.使用TensorFlow运算符op搭建graph
  • 2.丢入数据,并运行graph:sess.run(op)
  • 3.自动更新graph中的变量并返回值

图片描述

占位符(Placeholder)

# 1.使用TensorFlow运算符op搭建graph
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
adder_node = tf.add(a, b)

# 2.丢入数据,并运行graph:sess.run(op, feed_dict{x: x_data})
# 3.自动更新graph中的变量并返回值
print(sess.run(adder_node, feed_dict={a: 3, b: 4.5}))
print(sess.run(adder_node, feed_dict={a: [1, 3], b: [2, 4]}))
7.5
[3. 7.]

TensorFlow机制

  • 1.使用TensorFlow运算符op搭建graph
  • 2.丢入数据,并运行graph:sess.run(op, feed_dict{x: x_data})
  • 3.自动更新graph中的变量并返回值

图片描述

万物皆张量(Everything is Tensor)

Tensors

3    # rank为0的张量,即shape为[]的表量
[1., 2., 3.]    # rank为1的张量;shape为[3]的向量
[[1., 2., 3.], [4., 5., 6.]]    # rank为2的张量;shape为[2, 3]的矩阵
[[[1., 2., 3.]], [[7., 8., 9.]]]    # rank为3的张量,形状为[2, 1, 3]

张量的阶、形状和类型

Tersor Ranks, Shapes, and Types

阶(Ranks)
秩/阶 数学名称 Python实例
0 标量 s = 483
1 向量 v = [1., 2., 3.]
2 矩阵 m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
3 3-Tensor t = [[[2], [4], [6]], [[8], [10], [12]], [[14], [16], [18]]]
n n-Tensor ...
形状(Shapes)
Rank Shape 维数 示例
0 [] 0-D 0维Tensor; 标量
1 [D0] 1-D 形状为[5]的1维张量
2 [D0, D1] 2-D 形状为[3, 4]的2维张量
3 [D0, D1, D2] 3-D 形状为[1, 4, 3]的3维张量
n [D0, D1, ..., Dn-1] n-D 形状为[D0, D1, ..., Dn-1]的n维张量
类型(Types)
数据类型 Python数据类型 描述
FLOAT tf.float32 32位浮点型
DOUBLE tf.float64 64位浮点型
INT8 tf.int8 有符号8位整型
INT16 tf.int16 有符号16位整型
INT32 tf.int32 有符号32位整型
INT64 tf.int64 有符号64位整型

xiao蜗牛
85 声望20 粉丝

{name: 'Xiao蜗牛',