TF张量类型和运算
2020-03-19 本文已影响0人
焜俞
TF张量类型和运算
TensorFlow有一些基础的数据类型和对数据的运算,我们来进行简单介绍
本节目录
- TF数据类型
- TF数学运算
数据类型
TF的数据基础是张量,零维的张量是一个标量(Scalar),二维张量是一个向量,三维张量是一个矩阵,随之还有四维甚至更高维度张量。
通常我们使用tf.constant(value, dtype=None, shape=None, name='Const')
创建一个普通张量,value
是张量Python
下的表示,dtype
是张量的精度,提供有tf.int
, tf.float
等很多可供选择。其余参数不太常用,我们不做过多介绍。给出如下例子:
#TensorFlow的数据类型:张量
t1 = tf.constant(1) #scalar标量
t2 = tf.constant([1,2,3,4]) #一维行向量vector
t3 = tf.constant([[1],[2],[3],[4]]) #一维列向量
t4 = tf.constant([[1,2],[3,4]]) #2*2矩阵 Matrix
t5 = tf.constant([[[1,2],[3,4]],[[5,6],[7,8]]]) #2*2*2张量
#图片一般是四维张量,TenSorFlow中包括图片数量,长,宽,RGB通道数和PyTorch略有不同
当然我们还可以创建字符串String
或者布尔值Boolen
,我们给出如下示意:
#TensorFlow的数据类型:字符串
tstr = tf.constant('Hello, TensorFlow')
print(tstr)
print(tf.strings.lower(tstr))
#我们可以使用tf.strings中的方法,对字符串进行处理
#TensorFlow的数据类型:布尔值
tBool1 = tf.constant(True)
tBool2 = tf.constant([True,False])
print(tBool1)
print(tBool2)
#但是tf中的Bool和Python中的Bool并不一样
print(True==tBool1) #仅进行数值比较
print(True is tBool1) #还进行类别比较
上面我们创建的只是普通的张量,在大多时候我们需要创建可优化的张量,也就是需要优化的参数,比如y = a*x + b
中的a
和b
,就属于不断优化的参数,我们通过使用tf.Variable()
方法创建,给出如下实例:
#TensorFlow的数值类型:待优化张量Variable,比如我们要求的参数,线性回归中的w和b这些。Variable在普通中添加了name和trainable属性
tt = tf.constant([1,2,3])
Vtt = tf.Variable(tt)
#将普通数值类型转换为待优化
Vt = tf.Variable([1,2,3]) #直接创建待优化张量
print(Vt.name,Vt.trainable)
print(Vtt)
print(Vt) #数值一样。名称一样
#我们也可以将数值精度用tf.cast()进行转换,还可以进行类型之间的转换
tt1 = tf.cast(t1,tf.int8)
tt2 = tf.cast(tf.constant(True),tf.int8)
print(tt1)
print(tt2)
TF数学运算
我们比较常见的数学运算TF都提供的有,我们给出如下实例
#+, -, *, /加减乘除
# @是矩阵乘法
tf.pow#自定义指数运算
tf.exp#e指数运算
tf.math.log#对数运算