TF張量類型和運算
TensorFlow有一些基礎的數(shù)據(jù)類型和對數(shù)據(jù)的運算抡谐,我們來進行簡單介紹
本節(jié)目錄
- TF數(shù)據(jù)類型
- TF數(shù)學運算
數(shù)據(jù)類型
TF的數(shù)據(jù)基礎是張量,零維的張量是一個標量(Scalar)蝇率,二維張量是一個向量,三維張量是一個矩陣,隨之還有四維甚至更高維度張量沙咏。
通常我們使用tf.constant(value, dtype=None, shape=None, name='Const')
創(chuàng)建一個普通張量,value
是張量Python
下的表示币旧,dtype
是張量的精度践险,提供有tf.int
, tf.float
等很多可供選擇。其余參數(shù)不太常用,我們不做過多介紹巍虫。給出如下例子:
#TensorFlow的數(shù)據(jù)類型:張量
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中包括圖片數(shù)量,長占遥,寬俯抖,RGB通道數(shù)和PyTorch略有不同
當然我們還可以創(chuàng)建字符串String
或者布爾值Boolen
,我們給出如下示意:
#TensorFlow的數(shù)據(jù)類型:字符串
tstr = tf.constant('Hello, TensorFlow')
print(tstr)
print(tf.strings.lower(tstr))
#我們可以使用tf.strings中的方法,對字符串進行處理
#TensorFlow的數(shù)據(jù)類型:布爾值
tBool1 = tf.constant(True)
tBool2 = tf.constant([True,False])
print(tBool1)
print(tBool2)
#但是tf中的Bool和Python中的Bool并不一樣
print(True==tBool1) #僅進行數(shù)值比較
print(True is tBool1) #還進行類別比較
上面我們創(chuàng)建的只是普通的張量瓦胎,在大多時候我們需要創(chuàng)建可優(yōu)化的張量芬萍,也就是需要優(yōu)化的參數(shù),比如y = a*x + b
中的a
和b
搔啊,就屬于不斷優(yōu)化的參數(shù)柬祠,我們通過使用tf.Variable()
方法創(chuàng)建,給出如下實例:
#TensorFlow的數(shù)值類型:待優(yōu)化張量Variable负芋,比如我們要求的參數(shù)漫蛔,線性回歸中的w和b這些。Variable在普通中添加了name和trainable屬性
tt = tf.constant([1,2,3])
Vtt = tf.Variable(tt)
#將普通數(shù)值類型轉換為待優(yōu)化
Vt = tf.Variable([1,2,3]) #直接創(chuàng)建待優(yōu)化張量
print(Vt.name,Vt.trainable)
print(Vtt)
print(Vt) #數(shù)值一樣示罗。名稱一樣
#我們也可以將數(shù)值精度用tf.cast()進行轉換,還可以進行類型之間的轉換
tt1 = tf.cast(t1,tf.int8)
tt2 = tf.cast(tf.constant(True),tf.int8)
print(tt1)
print(tt2)
TF數(shù)學運算
我們比較常見的數(shù)學運算TF都提供的有惩猫,我們給出如下實例
#+, -, *, /加減乘除
# @是矩陣乘法
tf.pow#自定義指數(shù)運算
tf.exp#e指數(shù)運算
tf.math.log#對數(shù)運算