跟著我左手右手一個慢動作~~耶呃~~來左邊跟我一起畫條龍,來右邊跟我一起畫道彩虹。
正經(jīng)點不和大家開玩笑,Tensorflow對于入門機器學(xué)習(xí)的同學(xué)們來說一定如雷貫耳牙咏。Tensorflow作為谷歌爸爸的開源機器學(xué)習(xí)框架,強大咱就不多說了嘹裂,它在搭建各種機器學(xué)習(xí)模型方面都很方便妄壶,可謂不可不學(xué)。
TaensorFlow的安裝
本教程目前只介紹Windows平臺下的安裝教程(主要是只會Window寄狼,我太菜了)盯拱,直接按照下面操作:
pip install tensorflow
或者
pip install tensorflow-gpu
然后到你的Idle中看一看,下面代碼是否運行成功
import tensorflow as tf
1例嘱、張量的基本運算操作
import tensorflow as tf
sess=tf.InteractiveSession()#交互窗口下的會話狡逢,否則直接Session
x=tf.constant([[1,3,5,7],[6,8,9,1],[7,5,6,4],[3,1,4,2]],dtype=tf.float32)
#用constant方法創(chuàng)建張量,可以指定數(shù)據(jù)類型
floatx=tf.constant([[1,3,5,7],[6,8,9,1],[7,5,6,4],[3,1,4,2]],dtype=tf.float32)
tf.transpose(x).eval()#求張量的轉(zhuǎn)置
#eval方法將張量轉(zhuǎn)化為Numpy的數(shù)組
>>>array([[1, 6, 7, 3],
[3, 8, 5, 1],
[5, 9, 6, 4],
[7, 1, 4, 2]])
tf.matmul(x,x).eval()#張量的乘法
>>>array([[ 75, 59, 90, 44],
[120, 128, 160, 88],
[ 91, 95, 132, 86],
[ 43, 39, 56, 42]])
tf.matrix_determinant(floatx).eval()#注意這個時候輸入要是浮點型數(shù)據(jù),計算張量行列式
>>>559.99994
tf.matrix_inverse(floatx).eval()#張量的逆
>>>array([[-0.12857144, -0.09999999, 0.22857143, 0.04285716],
[ 0.05714285, 0.09999999, 0.09285715, -0.43571427],
[ 0.02142857, 0.09999999, -0.24642858, 0.36785716],
[ 0.12142858, -0.1 , 0.10357143, -0.08214287]],
dtype=float32)#輸入也必須是浮點型拼卵,否則會報錯
tf.matrix_solve(floatx,tf.matmul(floatx,floatx)).eval()#求張量的解奢浑,已知一個張量和張量的積,求另一個張量
>>>array([[0.9999999, 3.0000007, 5.0000014, 7.000001 ],
[6. , 8. , 9. , 1.0000005],
[7. , 4.999999 , 5.999999 , 3.9999993],
[3.0000002, 1.0000004, 4.0000005, 2.0000002]], dtype=float32)#解矩陣方程
2腋腮、約簡:是一種跨緯度的張量操作雀彼,計算結(jié)果比原張量縮減一個維度
import tensorflow as tf
sess=tf.InteractiveSession()
t=tf.constant([[1,2,3],[3,2,1],[8,7,9]])
tf.reduce_max(t,reduction_indices=1).eval()#求每一行的最大值
>>>array([3, 3, 9])
tf.reduce_min(t,reduction_indices=1).eval()#求最小
>>>array([1, 1, 7])
tf.reduce_mean(t,reduction_indices=1).eval()#求平均
>>>array([2, 2, 8])
3、張量分割:通過索引對重復(fù)索引元素進(jìn)行操作
import tensorflow as tf
sess=tf.InteractiveSession()
option=tf.constant([0,0,1,2,2])
t=tf.constant([[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]])
#[0,0,1,2,2]分別對應(yīng)從第一到第五行即寡;1徊哑,2兩行都是0,所以會對它倆進(jìn)行操作聪富,同理對4莺丑,5兩行
tf.segment_sum(t,option).eval()
>>>array([[ 3, 7, 11, 15],
[ 2, 5, 7, 9],
[10, 12, 12, 8]])#對1,2兩行上下求和墩蔓;對4梢莽,5兩行上下求和
tf.segment_max(t,option).eval()
>>>array([[2, 4, 6, 8],
[2, 5, 7, 9],
[9, 7, 6, 4]])#同理,求最大值
tf.segment_min(t,option).eval()
>>>array([[1, 3, 5, 7],
[2, 5, 7, 9],
[1, 5, 6, 4]])#同理求最小
tf.segment_mean(t,option).eval()
>>>array([[1, 3, 5, 7],
[2, 5, 7, 9],
[5, 6, 6, 4]])#同理求平均值
4奸披、序列:返回操作對應(yīng)元素的索引
t=tf.constant([[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]])
tf.arg_max(t,0).eval()#第一個參數(shù)是張量昏名,第二個是軸;返回每一列最大值的索引
>>>array([4, 4, 2, 2], dtype=int64)
tf.arg_min(t,1).eval()#返回每一行最小值的索引
array([0, 0, 0, 0, 3], dtype=int64)
5阵面、張量形狀變換
t=tf.constant([[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]])
tf.shape(t).eval()#返回張量形狀
>>>array([5, 4])
tf.size(t).eval()#返回張量的大小
>>>20
tf.reshape(t,[5,4]).eval()#改變張量的形狀
>>>array([[1, 3, 5, 7],
[2, 4, 6, 8],
[2, 5, 7, 9],
[1, 5, 6, 4],
[9, 7, 6, 4]])
6轻局、張量切片(難點)
t=tf.constant([[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]])
tf.slice(t,[2,2],[2,2]).eval()
array([[7, 9],
[6, 4]])
原理:第一個數(shù)組表示初始位置洪鸭,第二個表示截取的張量形狀;上面第一個[2,2]表示第三行第三列(數(shù)組索引從0開始)仑扑,7即為起始元素览爵;第二個數(shù)組[2,2]表示從起始元素開始算幾行幾列,[2,2]就表示兩行兩列夫壁,也就是[[7,9],[6,4]]
練習(xí)題
對數(shù)組[[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]]拾枣,tf.slice([1,2],[4,2])切片結(jié)果是多少沃疮?
答案:[[6,8],[7,9],[6,4],[6,4]]盒让,你做對了嗎?
以上就是TensorFlow最最基本的操作司蔬。有人可能就要問了邑茄,TensorBoard呢?Holder呢俊啼?哎肺缕,別急別急,等到用時授帕,結(jié)合實例學(xué)習(xí)豈不更好同木?