Tensorflow的基礎(chǔ)知識(shí)(一)

《Tensorflow深度學(xué)習(xí)》一書(shū)看了2遍送巡,但是仍然有些地方不熟悉若贮,因此決定寫(xiě)博客記錄一下自已的學(xué)習(xí)歷程嗦玖。關(guān)鍵是要用到這些知識(shí)的時(shí)候可以隨時(shí)來(lái)這里復(fù)習(xí)硬梁。

1.Tensorflow的數(shù)據(jù)類(lèi)型

Tensorflow中的基本數(shù)據(jù)類(lèi)型包括數(shù)值類(lèi)型、字符串類(lèi)型和布爾類(lèi)型。

數(shù)值類(lèi)型

  1. 標(biāo)量:?jiǎn)蝹€(gè)的實(shí)數(shù)涡扼,如1,2,3,4等稼跳,維度數(shù)為0,shape為[]
a = tf.constant(1)
  1. 向量:向量的形式是這樣的[1,2]壳澳,[1,2,3,4]岂贩。維度數(shù)為1. shape為[n]
a = tf.constan([1,2])
  1. 矩陣:n行m列實(shí)數(shù)的有序集合茫经,形式如[[1,2],[3,4]]巷波,維度數(shù)為2,shape為[n,m]
    a = tf.constant([[1,2],[3,4]])
  2. 張量:所有維度dim>2的數(shù)組統(tǒng)稱(chēng)為張量卸伞,張量的每個(gè)維度也叫做軸抹镊,一般維度代表了具體的物理含義,比如Shape為[2,32,32,3]的張量共的4維荤傲,如果表示圖片數(shù)據(jù)的話垮耳,每個(gè)維度/軸代表的含義分別是圖片數(shù)量、圖片高度遂黍、圖片寬度终佛、圖片通道數(shù),其中2代表了2張圖片雾家,32代表了高铃彰、寬均為32,3代表了RGB共3個(gè)通道芯咧。

另外牙捉,在Tensorflow中間,為了表達(dá)方便敬飒,一般把標(biāo)量邪铲、向量、矩陣也統(tǒng)稱(chēng)為張量无拗,不作區(qū)分带到。

字符串類(lèi)型

通過(guò)傳入字符串對(duì)象即可創(chuàng)建字符串類(lèi)型的張量。

a = tf.constant('Hello, Deep Learning.')

在tf.strings模塊中英染,提供了常見(jiàn)的字符串類(lèi)型的工具函數(shù)揽惹,如小寫(xiě)化lower()、拼接join()税迷、長(zhǎng)度length()永丝、切分split()等
深度學(xué)習(xí)算法主要還是以數(shù)值類(lèi)型的張量運(yùn)算為主,字符串類(lèi)型的數(shù)據(jù)使用頻率較低箭养。

布爾類(lèi)型

布爾類(lèi)型的標(biāo)量形式如下:

a = tf.constant(True)

布爾類(lèi)型的向量形式如下:

a = tf.constant([True, False])

需要注意的是慕嚷,Tensorflow的布爾類(lèi)型和Python的布爾類(lèi)型并不等價(jià),不能通用。例如:

a = tf.constant(True)
a is True #TF布爾類(lèi)型張量與python布爾類(lèi)型比較
a == True #僅數(shù)值比較

Out[11]:
False #對(duì)象不等價(jià)
<tf.Tensor: id=8, shape=(), dtype=bool, numpy=True> # 數(shù)值比較結(jié)果

2.Tensorflow的數(shù)值精度

Tensorflow常用的精度類(lèi)型有tf.int16喝检、tf.int32嗅辣、tf.int64、tf.float16挠说、tf.float32澡谭、tf.float64等,其中tf.float64即為tf.double

在創(chuàng)建張量時(shí)损俭,可以指定張量的保存精度蛙奖,例如:

tf.constant(123456789, dtype=tf.int16)
tf.constant(123456789, dtype=tf.int32)
<tf.Tensor: shape=(), dtype=int16, numpy=-13035>
<tf.Tensor: shape=(), dtype=int32, numpy=123456789>

可以看到,保存精度過(guò)低時(shí)杆兵,數(shù)據(jù)123456789發(fā)生了溢出雁仲,得到了錯(cuò)誤的結(jié)果,一般使用tf.int32,tf.int64精度琐脏,對(duì)于浮點(diǎn)數(shù)攒砖,高精度的張量可以表示更精準(zhǔn)的數(shù)據(jù),例如用tf.float32精度保存π時(shí)日裙,實(shí)際的數(shù)據(jù)為3.1415927 吹艇。

import numpy as np
tf.constant(np.pi,dtype=tf.float32)
<tf.Tensor: shape=(), dtype=float32, numpy=3.1415927>

如果采用tf.float64精度保存π時(shí),則能獲得更高的精度昂拂,實(shí)現(xiàn)如下受神。

tf.constant(np.pi, dtype=tf.float64)
<tf.Tensor: shape=(), dtype=float64, numpy=3.141592653589793>

對(duì)于大部分深度學(xué)習(xí)算法,一般使用tf.int32和tf.float32即可滿(mǎn)足大部分場(chǎng)合下的運(yùn)算要求政钟。

2.1 讀取張量的精度

通過(guò)訪問(wèn)張量的dtype成員屬性可以判斷張量的保存精度路克。

a = tf.constant(1., dtype=tf.float16)
print('before:',a.dtype)
if a.dtype != tf.float32:
    a = tf.cast(a, dtype=tf.float32)
print('after:',a.dtype)    

2.2 張量類(lèi)型轉(zhuǎn)換

張量的類(lèi)型轉(zhuǎn)換可以使用tf.cast函數(shù)來(lái)進(jìn)行操作

a = tf.constant(np.pi,dtype=tf.float16)
tf.cast(a,dtype=tf.double)
<tf.Tensor: shape=(), dtype=float64, numpy=3.140625>

在進(jìn)行類(lèi)型轉(zhuǎn)換時(shí),需要保證轉(zhuǎn)換操作的合法性养交,例如將高精度的張量轉(zhuǎn)換為低精度的張量時(shí)精算,可能會(huì)發(fā)生數(shù)據(jù)溢出的錯(cuò)誤。
布爾類(lèi)型與整型之間相互轉(zhuǎn)換也是合法的碎连。

a = tf.constant([True, False])
tf.cast(a, tf.int32)
<tf.Tensor: shape=(2,), dtype=int32, numpy=array([1, 0], dtype=int32)>

注意:一般默認(rèn)0表示False灰羽,1表示True,在Tensorflow中鱼辙,將非0數(shù)字都視為T(mén)rue廉嚼。

3.待優(yōu)化張量

為了區(qū)分需要計(jì)算梯度信息的張量與不需要計(jì)算梯度信息的張量,TensorFlow增加了一種專(zhuān)門(mén)的數(shù)據(jù)類(lèi)型來(lái)支持梯度信息的記錄:tf.Variable倒戏。tf.Variable類(lèi)型在普通的張量類(lèi)型基礎(chǔ)上添加了name怠噪,trainable等屬性來(lái)支持計(jì)算圖的構(gòu)建。由于梯度運(yùn)算會(huì)消耗大量的計(jì)算資源杜跷,而且會(huì)自動(dòng)更新相關(guān)參數(shù)傍念,對(duì)于不需要優(yōu)化的張量矫夷,如神經(jīng)網(wǎng)絡(luò)的輸入X,不需要通過(guò)tf.Variable封裝憋槐;相反双藕,對(duì)于需要計(jì)算梯度并優(yōu)化的張量,如神經(jīng)網(wǎng)絡(luò)的W和b阳仔,需要通過(guò)tf.Variable包裹以便TensorFlow跟蹤相關(guān)梯度信息忧陪。

通過(guò)tf.Variable()函數(shù)可以將普通張量轉(zhuǎn)換為待優(yōu)化張量,例如:

a = tf.constant([-1,0,1,2])
aa = tf.Variable(a)
aa.name,aa.trainable
('Variable:0', True)

其中張量的name和trainable屬性是Variable特有的屬性近范,name屬性用于命名計(jì)算圖中的變量嘶摊,這套命名體系是TensroFlow內(nèi)部維護(hù)的,一般不需要用戶(hù)關(guān)注name屬性顺又;trainable屬性表征當(dāng)前張量是否需要被優(yōu)化更卒,創(chuàng)建Variable對(duì)象時(shí)是默認(rèn)啟用優(yōu)化標(biāo)志等孵,可以設(shè)置trainable=False來(lái)設(shè)置張量不需要優(yōu)化稚照。

除了通過(guò)普通張量方式創(chuàng)建Variable,也可以直接創(chuàng)建俯萌,例如:

a = tf.Variable([[1,2],[3,4]]) #直接創(chuàng)建Variable張量
print(a)
<tf.Variable 'Variable:0' shape=(2, 2) dtype=int32, numpy=
array([[1, 2],
       [3, 4]], dtype=int32)>

待優(yōu)化張量可視為普通張量的特殊類(lèi)型果录,普通張量其實(shí)也可以通過(guò)GradientTape.watch()方法臨時(shí)加入跟蹤梯度信息的列表,從而支持自動(dòng)求導(dǎo)功能咐熙。

4.創(chuàng)建張量

在TensorFlow中弱恒,可以通過(guò)多種方試創(chuàng)建張量,如從Python列表對(duì)象創(chuàng)建棋恼,從Numpy數(shù)組創(chuàng)建返弹,或者創(chuàng)建采樣自某種已知分布的張量等。

4.1 從數(shù)組爪飘、列表對(duì)象創(chuàng)建

a = tf.constant([1,2])#從列表創(chuàng)建張量
a = tf.constant(np.array([[1,2],[3,4]]))#從數(shù)組中創(chuàng)建張量

4.2 創(chuàng)建全0或全1張量

將張量創(chuàng)建為全0或全1數(shù)據(jù)是非常常見(jiàn)的張量初始化手段义起。考慮線性變換y = Wx + b师崎,將權(quán)值矩陣W初始化為全1矩陣默终,偏置b初始化為全0向量,此時(shí)線性變化層輸出y = x犁罩,因此是一種比較好的層初始化狀態(tài)齐蔽,通過(guò)tf.zeros()和tf.ones()即可創(chuàng)建任意形狀,且內(nèi)容全0或全1的張量床估。例如含滴,創(chuàng)建為0和為1的標(biāo)量。

tf.ones([])#創(chuàng)建全1標(biāo)量
tf.zeros([])#創(chuàng)建全0標(biāo)量

創(chuàng)建全0和全1的向量丐巫。

tf.zeros([1])#創(chuàng)建全0向量
tf.ones([1])#創(chuàng)建全1向量

創(chuàng)建全0和全1的矩陣谈况,例如:

tf.zeros([2,2])#全0矩陣
tf.ones([2,2])#全1矩陣

通過(guò)tf.zeros_like源哩,tf.ones_like可以方便地新建與某個(gè)張量shape一致,且內(nèi)容為全0或全1的張量鸦做。

a = tf.ones([2,3])#創(chuàng)建一個(gè)全1矩陣
tf.zeros_like(a)#創(chuàng)建一個(gè)與a形狀相同励烦,但是全0的新矩陣
a = tf.zeros([3,2])#創(chuàng)建一個(gè)全0矩陣
tf.ones_like(a)#創(chuàng)建一個(gè)與a形狀相同,但是全1的新矩陣

tf.*_like是一系列的便捷函數(shù)泼诱,可以通過(guò)tf.zeros(a.shape)等方式實(shí)現(xiàn)坛掠。

4.3創(chuàng)建自定義數(shù)值張量

除了初始化為全0或全1的張量之外,有時(shí)也需要全部初始化為某個(gè)自定義數(shù)值的張量治筒,比如將張量的數(shù)值全部初始化為-1等屉栓。
通過(guò)tf.fill(shape,value)可以創(chuàng)建全為自定義數(shù)值value的張量。例如耸袜,創(chuàng)建元素為-1的標(biāo)量友多。

tf.fill([],-1)#創(chuàng)建-1的標(biāo)量
tf.fill([1],-1)#創(chuàng)建-1的向量
tf.fill([2,2],99)#創(chuàng)建所有元素為99的矩陣

4.4創(chuàng)建已知分布的張量

正態(tài)分布和均勻分布是最常見(jiàn)的分布之一,創(chuàng)建采樣自這兩種分布的張量非常有用堤框,比如在卷積神經(jīng)網(wǎng)絡(luò)中域滥,卷積核張量W初始化為正態(tài)分布有利于網(wǎng)絡(luò)的訓(xùn)練;在生成對(duì)抗網(wǎng)絡(luò)中蜈抓,隱藏變量z一般采樣自均勻分布启绰。

通過(guò)tf.random.normal(shape,mean=0.0,stddev=1.0)可以創(chuàng)建形狀為shape,均值為mean沟使,標(biāo)準(zhǔn)差為stddev的正態(tài)分布N(mean,stddev**2)委可。例如,創(chuàng)建均值為0腊嗡,標(biāo)準(zhǔn)差為1的正態(tài)分布着倾。

tf.random.normal([2,2])#創(chuàng)建標(biāo)準(zhǔn)正態(tài)分布的張量
tf.random.normal([2,2],mean=1,stddev=2)#創(chuàng)建均值為1,標(biāo)準(zhǔn)差為2的正態(tài)分布

通過(guò)tf.random.uniform(shape,minval=0,maxval=None,dtype=tf.float32)可以創(chuàng)建采樣自[minval,maxval)區(qū)間的均勻分布的張量燕少。例如創(chuàng)建采樣自區(qū)間[0,1)卡者,shape為[2,2]的矩陣。

tf.random.uniform([2,2])
tf.random.uniform([2,2],maxval=10)#創(chuàng)建采樣自[0,10),均勻分布的矩陣

如果需要均勻采樣整形類(lèi)型的數(shù)據(jù)棺亭,必須指定采樣區(qū)間的最大值maxval參數(shù)虎眨,同時(shí)指定數(shù)據(jù)類(lèi)型為tf.int*型:

tf.random.uniform([2,2],maxval=100,dtype=tf.int32)#創(chuàng)建采樣自[0,100)均勻分布的整型數(shù)據(jù)

創(chuàng)建序列

在循環(huán)計(jì)算或者對(duì)張量進(jìn)行索引時(shí),經(jīng)常需要?jiǎng)?chuàng)建一段連續(xù)的整型序列镶摘,可以通過(guò)tf.range()函數(shù)實(shí)現(xiàn)嗽桩。tf.range(limit,delta=1)可以創(chuàng)建[0,limit)之間,步長(zhǎng)為delta的整型序列凄敢,不包含limit本身碌冶。例如,創(chuàng)建0~10涝缝,步長(zhǎng)為1的整型序列:

tf.range(10) #0~10,不包含10
tf.range(10,delta=2)#0~10,步長(zhǎng)為2的整型序列

通過(guò)tf.range(start,limit,delta=1)可以創(chuàng)建[start,limit)扑庞,步長(zhǎng)為delta的序列譬重,不包含limit本身:

tf.range(1,10,delta=2)#1~10,步長(zhǎng)為2的整型序列

5.張量的典型應(yīng)用

在介紹張量的典型應(yīng)用時(shí)不可避免地會(huì)提及后續(xù)將要學(xué)習(xí)的網(wǎng)絡(luò)模型或算法罐氨,學(xué)習(xí)時(shí)不需要完全理解臀规,有初步印象即可。

5.1 標(biāo)量的應(yīng)用

在TensorFlow中栅隐,標(biāo)量最容易理解塔嬉,它就是一個(gè)簡(jiǎn)單的數(shù)字,維度數(shù)為0租悄,shape為[]谨究。標(biāo)量的一些典型用途是誤差值的表示、各種測(cè)量指標(biāo)的表示泣棋,比如準(zhǔn)確度(Accuracy胶哲,簡(jiǎn)稱(chēng)acc),精度(Precision)和召回率(Recall)等潭辈。

以均方差誤差函數(shù)為例鸯屿,經(jīng)過(guò)tf.keras.losses.mes返回每個(gè)樣本上的誤差值,最后取誤差值的均值作為當(dāng)前Batch的誤差萎胰,它是一個(gè)標(biāo)量:

import tensorflow as tf

out = tf.random.normal([4,10])#隨機(jī)模擬網(wǎng)絡(luò)輸出
y = tf.constant([2,3,2,0])#隨機(jī)構(gòu)造樣本真實(shí)標(biāo)簽
y = tf.one_hot(y,depth=10)#one_hot編碼

loss = tf.keras.losses.mse(y,out)#計(jì)算每個(gè)樣本的MSE
loss = tf.reduce_mean(loss)#平均MSE,loss應(yīng)是標(biāo)量
print(loss)

5.2向量的應(yīng)用

向量是一種非常常見(jiàn)的數(shù)據(jù)載體碾盟,如在全連接層和卷積神經(jīng)網(wǎng)絡(luò)層中,偏置張量b就是使用向量來(lái)表示技竟。
考慮2個(gè)輸出結(jié)點(diǎn)的網(wǎng)絡(luò)層,我們創(chuàng)建長(zhǎng)度為2的偏置向量b屈藐,并累加在每個(gè)輸出結(jié)點(diǎn)上:

z = tf.random.normal([4,2])# z=wx,模擬獲得激活函數(shù)的輸入z
b = tf.zeros([2])#創(chuàng)建偏置向量
out = z+b#累加上偏置向量·
print(out)

通過(guò)高層接口類(lèi)Dense()方式創(chuàng)建的網(wǎng)絡(luò)層榔组,張量W和b存儲(chǔ)在類(lèi)的內(nèi)部,由類(lèi)自動(dòng)創(chuàng)建并管理联逻〈瓿叮可以通過(guò)全連接層的bias成員變量查看偏置變量b,例如創(chuàng)建輸入結(jié)點(diǎn)數(shù)為4包归,輸出結(jié)點(diǎn)數(shù)為3的線性層網(wǎng)絡(luò)锨推,那么它的偏置向量b的長(zhǎng)度應(yīng)為3,實(shí)現(xiàn)如下:

from tensorflow.keras import layers

fc = layers.Dense(3)#創(chuàng)建一層wx+b,輸出結(jié)點(diǎn)為3
fc.build(input_shape=(2,4))#通過(guò)build函數(shù)創(chuàng)建w,b張量公壤,輸入結(jié)點(diǎn)為4
fc.bias#查看偏置向量
<tf.Variable 'bias:0' shape=(3,) dtype=float32, numpy=array([0., 0., 0.], dtype=float32)>

可以看到换可,類(lèi)的偏置成員bias為長(zhǎng)度為3的向量,初始化為全0厦幅,這也是偏置b的默認(rèn)初始化方案沾鳄。同時(shí)偏置向量b的類(lèi)型為Variable,這是因?yàn)閃和b都是待優(yōu)化參數(shù)确憨。

5.3矩陣的應(yīng)用

矩陣也是非常常見(jiàn)的張量類(lèi)型译荞,比如全連接層的批量輸入張量X的形狀為[b,din]瓤的,其中b表示輸入樣木的個(gè)數(shù),即Batch Size吞歼,din表示輸入特征的長(zhǎng)度圈膏。例如特征長(zhǎng)度為4,一共包含2個(gè)樣本的輸入可以表示為矩陣篙骡。

x = tf.random.normal([2,4])#2個(gè)樣本本辐,特征長(zhǎng)度為4的張量

令全連接層的輸出結(jié)點(diǎn)數(shù)為3,則它的權(quán)值張量W的shape為[4,3]医增,我們利用張量X慎皱,W和向量b可以直接實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)層,代碼如下:

w = tf.ones([4,3])#定義w張量
b = tf.zeros([3])#定義b張量
o = x@w + b# x@w+b運(yùn)算
print(o)
tf.Tensor(
[[ 3.2366664   3.2366664   3.2366664 ]
 [-0.56299406 -0.56299406 -0.56299406]], shape=(2, 3), dtype=float32)

其中X和W張量均是矩陣叶骨,上述代碼實(shí)現(xiàn)了一個(gè)線性變換的網(wǎng)絡(luò)層茫多,激活函數(shù)為空。一般地忽刽,??(X@W+b)網(wǎng)絡(luò)層稱(chēng)為全連接層天揖,在TensorFlow中可以通過(guò)Dense類(lèi)直接實(shí)現(xiàn),特別地跪帝,當(dāng)激活函數(shù)??為空時(shí)今膊,全連接層也稱(chēng)為線性層。我們通過(guò)Dense類(lèi)創(chuàng)建輸入4個(gè)節(jié)點(diǎn)伞剑,輸出3個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)層斑唬,并通過(guò)全連接層的kernel成員名查看其權(quán)值矩陣W:

fc = layers.Dense(3)#定義全連接層的輸出結(jié)點(diǎn)為3
fc.build(input_shape=(2,4))#定義全連接層的輸入結(jié)點(diǎn)為4
fc.kernel#查看權(quán)值矩陣W
<tf.Variable 'kernel:0' shape=(4, 3) dtype=float32, numpy=
array([[-0.89720654, -0.38539422, -0.837082  ],
       [-0.5322888 , -0.3831355 ,  0.32437778],
       [ 0.2899388 , -0.5300534 , -0.41874212],
       [ 0.8843045 ,  0.3853227 ,  0.13318992]], dtype=float32)>

5.4三維張量的應(yīng)用

三維張量的一個(gè)典型應(yīng)用是表示序列信號(hào),它的格式是:
X = [b, sequence len, feature len]
其中b表示序列信號(hào)的數(shù)量黎泣,sequence len表示序列信號(hào)在時(shí)間維度上的采樣點(diǎn)數(shù)或步數(shù)恕刘。feature len表示每個(gè)點(diǎn)的特征長(zhǎng)度。

考慮自然語(yǔ)言處理(Natural Language Processing抒倚,簡(jiǎn)稱(chēng)NLP)中句子的表示褐着,如評(píng)價(jià)句子是否為正面情緒的情感分類(lèi)網(wǎng)絡(luò)。為了能夠方便字符串被神經(jīng)網(wǎng)絡(luò)處理托呕,一般將單詞通過(guò)嵌入層(Embedding Layer)編碼為固定長(zhǎng)度的向量含蓉,比如‘a(chǎn)’編碼為某個(gè)長(zhǎng)度為3的向量,那么2個(gè)等長(zhǎng)(單詞數(shù)量為5)的句子序列可以表示為shape為[2,5,3]的3維張量项郊,其中2表示句子個(gè)數(shù)馅扣,5表示單詞數(shù)量,3表示單詞向量的長(zhǎng)度呆抑。我們通過(guò)IMDB數(shù)據(jù)集來(lái)演示如何表示句子岂嗓,代碼如下:

from tensorflow import keras
(x_train,y_train),(x_test,y_test) = keras.datasets.imdb.load_data(num_words=10000)
x_train = keras.preprocessing.sequence.pad_sequences(x_train,maxlen=80)
x_train.shape
Out [46]: (25000, 80)

可以看到x_train張量的shape為[25000,80],其中25000表示句子個(gè)數(shù)鹊碍,80表示每個(gè)句子共80個(gè)單詞厌殉,每個(gè)單詞使用數(shù)字編碼方式表示食绿。我們通過(guò)layers.Embedding層將數(shù)字編碼的單詞轉(zhuǎn)換為長(zhǎng)度為100的詞向量。

embedding = layers.Embedding(10000,100)#創(chuàng)建詞向量Embedding層類(lèi)
out = embedding(x_train)#將數(shù)字編碼的單詞轉(zhuǎn)換為詞向量
out.shape
Out[47]: TensorShape([25000, 80, 100])

可以看到公罕,經(jīng)過(guò)Embedding層編碼后器紧,句子張量的shape變?yōu)閇25000,80,100],其中100表示每個(gè)單詞編碼為長(zhǎng)度是100的向量楼眷。

5.5 四維張量的應(yīng)用

四維張量在卷積神經(jīng)網(wǎng)絡(luò)中應(yīng)用非常廣泛铲汪,它用于保存特征圖(Feature maps)數(shù)據(jù),格式一般定義為
[b,h,w,c]
其中b表示輸入樣本的數(shù)量罐柳,h/w分別表示特征圖的高/寬掌腰,c表示特征圖的通道數(shù)。圖片數(shù)據(jù)是特征圖的一種张吉,對(duì)于含有RGB 3個(gè)通道的彩色圖片齿梁,每張圖片包含了h行w列像素點(diǎn),每個(gè)點(diǎn)需要3個(gè)數(shù)值表示RGB通道的顏色強(qiáng)度肮蛹,因此一張圖片可以表示為[h,w,3]勺择。

神經(jīng)網(wǎng)絡(luò)一般并行計(jì)算多個(gè)輸入以提高計(jì)算效率,故b張圖片的張量可表示為[b,h,w,3]伦忠,例如:

x = tf.random.normal([4,32,32,3])#創(chuàng)建32x32的彩色圖片輸入省核,圖片個(gè)數(shù)為4
layer = layers.Conv2D(16,kernel_size=3)#創(chuàng)建卷積神經(jīng)網(wǎng)絡(luò)
out = layer(x)#前向計(jì)算
out.shape
TensorShape([4, 30, 30, 16])

其中卷積核張量也是4維張量,可以通過(guò)kernel成員變量訪問(wèn)昆码。

layer.kernel.shape#訪問(wèn)卷積核張量
TensorShape([3, 3, 3, 16])
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末气忠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子未桥,更是在濱河造成了極大的恐慌笔刹,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冬耿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡萌壳,警方通過(guò)查閱死者的電腦和手機(jī)亦镶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)袱瓮,“玉大人缤骨,你說(shuō)我怎么就攤上這事〕呓瑁” “怎么了绊起?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)燎斩。 經(jīng)常有香客問(wèn)我虱歪,道長(zhǎng)蜂绎,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任笋鄙,我火速辦了婚禮师枣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘萧落。我一直安慰自己践美,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布找岖。 她就那樣靜靜地躺著陨倡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪许布。 梳的紋絲不亂的頭發(fā)上兴革,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音爹脾,去河邊找鬼帖旨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛灵妨,可吹牛的內(nèi)容都是我干的解阅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼泌霍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼货抄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起朱转,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蟹地,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后藤为,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體怪与,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年缅疟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了分别。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡存淫,死狀恐怖耘斩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情桅咆,我是刑警寧澤括授,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響荚虚,放射性物質(zhì)發(fā)生泄漏薛夜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一曲管、第九天 我趴在偏房一處隱蔽的房頂上張望却邓。 院中可真熱鬧,春花似錦院水、人聲如沸腊徙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撬腾。三九已至,卻和暖如春恢恼,著一層夾襖步出監(jiān)牢的瞬間民傻,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工场斑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漓踢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓漏隐,卻偏偏與公主長(zhǎng)得像喧半,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子青责,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354