TensorFlow是一个面向深度学习算法的科学计算库,TensorFlow内部数据保存在张量(tensor)对象上。TensorFlow使用tensor 数据结构来表示所有的数据。TensorFlow所有的运算操作(operation,简称OP)都是基于张量(tensor)对象的。在计算图中,操作间传递的数据都是 tensor。复杂的神经网络本质上就是各种张量相乘、相加等基本运算操作的组合。
TensorFlow 使用张量(Tensor)作为数据的基本单位。TensorFlow 的张量在概念上等同于多维数组,我们可以使用它来描述数学中的标量(0 维数组)、向量(1 维数组)、矩阵(2 维数组)等 n 维的数组。
关于tensor定义示例如下:
import tensorflow as tf# 定义一个随机数(标量)random_float = tf.random.uniform(shape=()) # 定义一个有2个元素的零向量zero_vector = tf.zeros(shape=(2)) # 定义两个2×2的常量矩阵A = tf.constant([[1., 2.], [3., 4.]])B = tf.constant([[5., 6.], [7., 8.]])
张量的重要属性是其形状、类型和值。可以通过张量的 shape 、 dtype 属性和 numpy() 方法获得。例如:
# 查看矩阵A的形状、类型和值print(A.shape) # 输出(2, 2),即矩阵的长和宽均为2print(A.dtype) # 输出print(A.numpy()) # 输出[[1. 2.] # [3. 4.]]
TensorFlow 的大多数 API 函数会根据输入的值自动推断张量中元素的类型(一般默认为 tf.float32 )。用户也可以通过加入 dtype 参数来自行指定类型,例如:
#将使得张量中的元素类型均为整数。 zero_vector = tf.zeros(shape=(2), dtype=tf.int32)
TensorFlow 里有大量的 操作 (Operation),使得我们可以将已有的张量进行运算后得到新的张量。示例如下:
C = tf.add(A, B) # 计算矩阵A和B的和D = tf.matmul(A, B) # 计算矩阵A和B的乘积
张量可分为常量和变量。下面通过代码和示例介绍常量和变量的使用方法。
(1)常量的定义和使用
#定义常量a = tf.constant(1)b = tf.constant(2)v1 = tf.constant([1.,2.])v2 = tf.constant([3.,4.])M = tf.constant([[1.,2.]])N = tf.constant([[1.,2.],[3.,4.]])K = tf.constant([[[1.,2.],[3.,4.]]])#运算c = a + bd = a * bv3 = v1 + v2M2 = M * M NN = tf.matmul(N,N)
(2)变量的定义和使用
#定义变量# a=tf.Variable() #这条语句是错误的,原因?v0 = tf.Variable(1.)print(v0)print(v0.numpy())v1 = tf.Variable(1., shape=tf.TensorShape(None)) #shape参数v1.assign([[1.]])print(v1)len(v1.numpy())my_var = tf.Variable(3,name="my_variable") #name参数print(my_var)#赋值v0.assign(2.)print(v0.numpy())# shape、dytpe和numpy()x = tf.Variable([1,2],dtype=tf.float64)print(x)print(x.shape)print(x.dtype)print(x.numpy())print(type(x)) ##运算v0.assign_add(0.5)print(v0.numpy())x.assign_add([1,2])x.assign_add([3,4])
今天介绍的TensorFlow内容就是这些,咱们明天见。