TensorFLow提供了一个库来定义和执行对张量的各种数学运算。张量
可理解为一个n维矩阵,所有类型的数据,包括标量、矢量、和矩阵等都是特殊类型的张量。
数据的类型 | 张量 | 形状 |
---|---|---|
标量 | 0维张量 | [] |
向量 | 1维张量 | [D0] |
矩阵 | 2维张量 | [D0,D1] |
张量 | N维张量 | [D0,D1…Dn-1] |
TensorFlow支持以下三种类型的张量: |
一、TensorFlow常量
常量是值不能改变的张量。
声明标量、向量、矩阵的常量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#1.声明一个标量常量:
t_1 = tf.constant(4)
#2.声明一个向量常量:
t_2 = tf.constant([4,3,2])
#3.声明一个2*3的零矩阵常量、全1矩阵常量(第二个参数表示类型):
zero_t = tf.zeros([2,3],tf.int32)
ones_t = tf.ones([2,3],tf.int32)
#4.创建一个与现有Numpy数组或张量常量具有相同形状的张量常量
t_3 = tf.zeros_like(t_2)
t_4 = tf.ones_like(t_2)
#5.声明一个在一定范围内等差排列的序列
t_5 = tf.linspace(start,stop,num)
t_6 = tf.range(start,limit,delta)创建随机张量
TensorFlow允许创建具有不同分布的随机张量:1
2
3
4
5
6
7
8#1.创建标准正态随机分布(mean表示均值,stddev表示标准差)
t_random = tf.random_normal([2,3],mean=2.0,stddev=4,seed=None)
#2.创建正态随机分布
t_random = tf.truncated_normal([2,3],mean=2.0,stddev=2,seed=None)
#3.创建均匀随机分布
t_random = tf.random_uniform([2,3],minval=0..0,maxval=1.0,seed=None)
如果t_random是要将给定的[3,6]张量随机剪裁为[2,5]大小:1
tf.random_crop(t_random, [2,5], seed=None)
二、TensorFlow变量
Variable变量通常在神经网络中表示权重和偏置。
Variable是TensorFlow下可以修改的张量,需要定义一个初始值,初始值可以是数值、列表、numpy矩阵,也可以直接是张量。
1
2
3
4
5
6
7
8
9#1.使用常量定义
var_a = tf.Variable(3, dtype=tf.int32)
var_b = tf.Variable([1,2], dtype=tf.float32)
var_c = tf.Variable(tf.zeros([1024,10]))
#2.使用另一个张量定义
rand_t = tf.random_uniform([50,50], mean=0, stddev=10, seed=0)
t_a = tf.Variable(rand_t)
t_b = tf.Variable(rand_t)在使用Variable时,必须初始化变量,也就是调用它们的初始化方法。调用初始化的方法可以全局调用,也可以初始化某些变量:
Variable变量可以通过assign赋值,赋值的过程是一个op,也是需要执行才会产生效果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16import tensorflow as tf
var_a = tf.Variable(3, dtype=tf.int32)
#变量重新赋值
assign_op = var_a.assign(5)
#变量初始化
init = tf.global_variables_initializer()
#开启一个会话
with tf.Session() as sess:
#执行变量初始化op
sess.run(init)
#执行赋值op
sess.run(assign_op)
#输出赋值后新的结果
print(sess.run(var_a))
三、TensorFlow占位符
TensorFlow允许通过tf.placeholder(dtype,shape=None,name=None)
在构建图的时候占据一个位置,然后等到执行图的时候再带入具体的值。
占据一个位置:
执行图时赋值:
1 | import tensorflow as tf |
(需要注意的是,所有常量、变量和占位符将在代码的构建图部分中定义。如果在定义部分使用 print 语句,只会得到有关张量类型的信息,而不是它的值。为了得到相关的值,需要创建会话图并对需要提取的张量显式使用运行命令)
四、op
TensorFlow的基本操作定义为op,以下是常见的op:
矩阵的reshape
在数据处理方面经常用到: