Declaring Tensors
Tensor是computational graph的基本數(shù)據(jù)結(jié)構(gòu)踢代,下面對(duì)一些基本操作進(jìn)行練習(xí)
1.定義一些? fixed number tensor
最簡單的定義是用constant來實(shí)現(xiàn)懂昂,將普通的數(shù)據(jù)裝換成tensor
假如我們需要固定值的tensor投队,比如全都是0或者都是1的伺绽,可以使用fill(dims,value,name=None)來實(shí)現(xiàn)
2. Tensors of similar shape
在numpy中經(jīng)常會(huì)利用已經(jīng)定義好的矩陣來定義一個(gè)新的矩陣(只是shape相同),在tensorflow中也有相似的操作.這里特別要注意的是加入我們想要同時(shí)運(yùn)算a,b,c不應(yīng)該是
with tf.Session() as sess:
???????? print(sess.run(a,b,c))
tf要求對(duì)于多個(gè)tensor輸入怔鳖,應(yīng)該是用列表的形式
3. Sequence tensors
我們可以定義一些都固定間隔的tensor,就好像range或者是numpy.inespace一樣
這里需要注意的是起始和終點(diǎn)數(shù)必須是浮點(diǎn)數(shù)竿刁,num表示一共返回幾個(gè)數(shù)(num必須為整數(shù))。還要注意的是返回的列表首尾必定是start和stop.
tf.range函數(shù)和上面的函數(shù)非常的相似较雕,唯一的不同就是定義的終止位不包含于返回值中.這里limit代表終止數(shù)碉哑,delta代表間隔。返回的值不包含limit,和python自帶的range一樣
4. Random tensors
random_uniform函數(shù)返回包括下線(minval)不包括上限(maxval)的列表亮蒋,其中的數(shù)服從均勻分布
當(dāng)然扣典,我們初始化的時(shí)候更可能以正態(tài)分布抽取
假如我們不希望抽取的數(shù)離均值太遠(yuǎn),那么我們可以用truncated_normal函數(shù)慎玖,它功能和上面的一樣贮尖,但是假如抽取的數(shù)離mean大于兩倍stddev的話將會(huì)被丟棄,重新抽取
tf.random_shuffle:比如我們的輸入x是每一種動(dòng)物的圖片(N*D)趁怔,但是每一類的圖片都連續(xù)的存儲(chǔ)湿硝,這樣我們?cè)诔槿atch的時(shí)候就比較的麻煩。這個(gè)函數(shù)可以在第一維度攪亂順序(注意只是第一維度H笈9匦薄!)
tf.random_crop:在數(shù)據(jù)增強(qiáng)中铺浇,經(jīng)常有隨機(jī)截取原圖片來形成新的圖片用來增廣數(shù)據(jù)集痢畜。可以用這個(gè)函數(shù)實(shí)現(xiàn)
值得注意的是鳍侣,random矩陣似乎是在運(yùn)行sess的時(shí)候抽取值的裁着,當(dāng)我們r(jià)un兩次random矩陣的時(shí)候,結(jié)果是不一樣的
結(jié)語:
上面的初始化定值tensor可以用來初始化變量拱她,當(dāng)然也可以用來運(yùn)算