日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ResNet在分别在Keras和tensorflow框架下的应用案例

發(fā)布時(shí)間:2025/3/17 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ResNet在分别在Keras和tensorflow框架下的应用案例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、殘差神經(jīng)網(wǎng)絡(luò)——ResNet的綜述

深度學(xué)習(xí)網(wǎng)絡(luò)的深度對(duì)最后的分類和識(shí)別的效果有著很大的影響,所以正常想法就是能把網(wǎng)絡(luò)設(shè)計(jì)的越深越好,

但是事實(shí)上卻不是這樣,常規(guī)的網(wǎng)絡(luò)的堆疊(plain network)在網(wǎng)絡(luò)很深的時(shí)候,效果卻越來越差了。其中原因之一

即是網(wǎng)絡(luò)越深,梯度消失的現(xiàn)象就越來越明顯,網(wǎng)絡(luò)的訓(xùn)練效果也不會(huì)很好。?但是現(xiàn)在淺層的網(wǎng)絡(luò)(shallower network)

又無法明顯提升網(wǎng)絡(luò)的識(shí)別效果了,所以現(xiàn)在要解決的問題就是怎樣在加深網(wǎng)絡(luò)的情況下又解決梯度消失的問題。

(二)殘差模塊——Residual bloack

?

通過在一個(gè)淺層網(wǎng)絡(luò)基礎(chǔ)上疊加 y=x 的層(稱identity mappings,恒等映射),可以讓網(wǎng)絡(luò)隨深度增加而不退化。

這反映了多層非線性網(wǎng)絡(luò)無法逼近恒等映射網(wǎng)絡(luò)。但是,不退化不是我們的目的,我們希望有更好性能的網(wǎng)絡(luò)。

?resnet學(xué)習(xí)的是殘差函數(shù)F(x) = H(x) - x, 這里如果F(x) = 0, 那么就是上面提到的恒等映射。事實(shí)上,

resnet是“shortcut connections”的在connections是在恒等映射下的特殊情況,它沒有引入額外的參數(shù)和計(jì)算復(fù)雜度。

假如優(yōu)化目標(biāo)函數(shù)是逼近一個(gè)恒等映射, 而不是0映射, 那么學(xué)習(xí)找到對(duì)恒等映射的擾動(dòng)會(huì)比重新學(xué)習(xí)一個(gè)映射函數(shù)要容易。

殘差函數(shù)一般會(huì)有較小的響應(yīng)波動(dòng),表明恒等映射是一個(gè)合理的預(yù)處理。

殘差模塊小結(jié):

非常深的網(wǎng)絡(luò)很難訓(xùn)練,存在梯度消失和梯度爆炸問題,學(xué)習(xí) skip connection它可以從某一層獲得激活,然后迅速反饋給另外一層甚至更深層,利用?skip connection可以構(gòu)建殘差網(wǎng)絡(luò)ResNet來訓(xùn)練更深的網(wǎng)絡(luò),ResNet網(wǎng)絡(luò)是由殘差模塊構(gòu)建的。

上圖中,是一個(gè)兩層的神經(jīng)網(wǎng)絡(luò),在l層進(jìn)行激活操作,得到a[l+1],再次進(jìn)行激活得到a[l+2]。由下面公式:

a[l+2] 加上了 a[l]的殘差塊,即:殘差網(wǎng)絡(luò)中,直接將a[l]向后拷貝到神經(jīng)網(wǎng)絡(luò)的更深層,在ReLU非線性激活前面

加上a[l],a[l]的信息直接達(dá)到網(wǎng)絡(luò)深層。使用殘差塊能夠訓(xùn)練更深層的網(wǎng)絡(luò),構(gòu)建一個(gè)ResNet網(wǎng)絡(luò)就是通過將很多

這樣的殘差塊堆積在一起,形成一個(gè)深度神經(jīng)網(wǎng)絡(luò)。

?

(三)殘差網(wǎng)絡(luò)——ResNet

上圖中是用5個(gè)殘差塊連接在一起構(gòu)成的殘差網(wǎng)絡(luò),用梯度下降算法訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò),若沒有殘差,會(huì)發(fā)現(xiàn)

隨著網(wǎng)絡(luò)加深,訓(xùn)練誤差先減少后增加,理論上訓(xùn)練誤差越來越小比較好。而對(duì)于殘差網(wǎng)絡(luò)來講,隨著層數(shù)增加,

訓(xùn)練誤差越來越減小,這種方式能夠到達(dá)網(wǎng)絡(luò)更深層,有助于解決梯度消失和梯度爆炸的問題,讓我們訓(xùn)練更深網(wǎng)絡(luò)

同時(shí)又能保證良好的性能。

殘差網(wǎng)絡(luò)有很好表現(xiàn)的原因舉例:

?

假設(shè)有一個(gè)很大的神經(jīng)網(wǎng)絡(luò),輸入矩陣為X,輸出激活值為a[l],加入給這個(gè)網(wǎng)絡(luò)額外增加兩層,最終輸出結(jié)果為a[l+2],

可以把這兩層看做一個(gè)殘差模塊,在整個(gè)網(wǎng)絡(luò)中使用ReLU激活函數(shù),所有的激活值都大于等于0。

對(duì)于大型的網(wǎng)絡(luò),無論把殘差塊添加到神經(jīng)網(wǎng)絡(luò)的中間還是末端,都不會(huì)影響網(wǎng)絡(luò)的表現(xiàn)。

殘差網(wǎng)絡(luò)起作用的主要原因是:It's so easy for these extra layers to learn the itentity function.?

這些殘差塊學(xué)習(xí)恒等函數(shù)非常容易。可以確定網(wǎng)絡(luò)性能不受影響,很多時(shí)候甚至可以提高學(xué)習(xí)效率。

?

模型構(gòu)建好后進(jìn)行實(shí)驗(yàn),在plain上觀測(cè)到明顯的退化現(xiàn)象,而且ResNet上不僅沒有退化,34層網(wǎng)絡(luò)的效果反而比18層的更好,而且不僅如此,ResNet的收斂速度比plain的要快得多。

實(shí)際中,考慮計(jì)算的成本,對(duì)殘差塊做了計(jì)算優(yōu)化,即將兩個(gè)3x3的卷積層替換為1x1 + 3x3 + 1x1, 如下圖。新結(jié)構(gòu)中的中間3x3的卷積層首先在一個(gè)降維1x1卷積層下減少了計(jì)算,然后在另一個(gè)1x1的卷積層下做了還原,既保持了精度又減少了計(jì)算量。

?

這相當(dāng)于對(duì)于相同數(shù)量的層又減少了參數(shù)量,因此可以拓展成更深的模型。于是作者提出了50、101、152層的ResNet,而且不僅沒有出現(xiàn)退化問題,錯(cuò)誤率也大大降低,同時(shí)計(jì)算復(fù)雜度也保持在很低的程度。

這個(gè)時(shí)候ResNet的錯(cuò)誤率已經(jīng)把其他網(wǎng)絡(luò)落下幾條街了,但是似乎還并不滿足,于是又搭建了更加變態(tài)的1202層的網(wǎng)絡(luò),對(duì)于這么深的網(wǎng)絡(luò),優(yōu)化依然并不困難,但是出現(xiàn)了過擬合的問題,這是很正常的,作者也說了以后會(huì)對(duì)這個(gè)1202層的模型進(jìn)行進(jìn)一步的改進(jìn)。

?

二、ResNet在Keras框架下的實(shí)現(xiàn)

(一)概況

?利用殘差神經(jīng)網(wǎng)絡(luò)ResNet構(gòu)建一個(gè)很深度的卷積神經(jīng)網(wǎng)絡(luò)。理論上,很深的神經(jīng)網(wǎng)絡(luò)代表著復(fù)雜的函數(shù),實(shí)際上它們很難訓(xùn)練,而ResNet比其他很深的神經(jīng)網(wǎng)絡(luò)訓(xùn)練起來更加實(shí)際可行。

1、構(gòu)建基本的ResNet模塊。

2、把這些ResNet模塊集成在一起,實(shí)現(xiàn)和訓(xùn)練一個(gè)用于圖像分類的最先進(jìn)的神經(jīng)網(wǎng)絡(luò)。

3、該ResNet網(wǎng)絡(luò)在深度學(xué)習(xí)框架?Keras下構(gòu)建完成。

?近年來,神經(jīng)網(wǎng)絡(luò)已變得更深,與最先進(jìn)的網(wǎng)絡(luò)從幾層(如AlexNet)到一百層。一個(gè)非常深的網(wǎng)絡(luò)的主要好處是:它可以代表非常復(fù)雜的函數(shù)。它還可以從許多不同層次的抽象中學(xué)習(xí)特征,從邊緣(在較低的層)到非常復(fù)雜的特性(在更深的層次)。然而,使用更深層的網(wǎng)絡(luò)并不總是有用的。訓(xùn)練它們巨大的障礙就是梯度消失:很深的網(wǎng)絡(luò)往往梯度信號(hào)變?yōu)榱愕乃俣瓤?#xff0c;從而使梯度下降法非常地慢。更特別的是,在梯度下降,當(dāng)你從最后一層BackProp回到第一層,每一步乘以權(quán)重矩陣,從而梯度以指數(shù)方式迅速減為為零(或者,在罕見的情況下,成倍的增長(zhǎng),迅速“爆炸”為非常大的值)。

在訓(xùn)練過程中,可能會(huì)看到前面層的梯度的量級(jí)或標(biāo)準(zhǔn)減小到零的速度很快,如下圖所示:

(二)、構(gòu)建殘差塊

在ResNet中,"shortcut" 或 "skip connection" 使得梯度反向傳播到更前面的層:下圖中左邊的圖片展示了神經(jīng)網(wǎng)絡(luò)的主路徑“main path”,右側(cè)的圖片為“main path”添加了一個(gè)“short cut”,通過堆疊這些ResNet模塊,可以構(gòu)建很深的神經(jīng)網(wǎng)絡(luò)。

?帶有“shortcut”的ResNet模塊,使得它對(duì)每一個(gè)模塊很容易學(xué)習(xí)到恒等函數(shù)“identy function”,這意味著你可以疊加額外ResNet模塊而對(duì)訓(xùn)練集的性能產(chǎn)生風(fēng)險(xiǎn)小的危害。還有一些證據(jù)表明,學(xué)習(xí)恒等函數(shù)“identy function”?甚至比"skip connection" 對(duì)于梯度消失問題更有幫助,且更能說明ResNets表現(xiàn)出色。在ResNet中使用兩種主要類型的模塊,主要取決于輸入/輸出尺寸是相同還是不同。

1、恒等殘差塊——The identity block

?The identity block是ResNets中使用的標(biāo)準(zhǔn)塊,對(duì)應(yīng)于輸入激活(例如 a [1])與輸出激活具有相同維度(例如a [l +2])。

(1)、兩層恒等殘差塊

下圖展示了ResNets的兩層的恒等殘差塊?identity block:

上面的路徑是“shortcut path”,下面的路徑是“main path”,在這個(gè)圖中,同樣也進(jìn)行了CONV2D和ReLU操作,為了加速訓(xùn)練的速度也加入了Batch正則化“Batch Norm”,Batch Norm在Keras框架中就一句代碼。

(2)、三層恒等殘差塊

在下面的這個(gè)例子中,將實(shí)際上實(shí)現(xiàn)一個(gè)略微更強(qiáng)大的版本,這個(gè)跳轉(zhuǎn)連接“跳過”3個(gè)隱藏層而不是2層。

(3)、下面是細(xì)節(jié)的步驟:

a、主路徑的第一部分:

第一個(gè)CONV2D的過濾器F1大小是(1*1),步長(zhǎng)s大小為(1*1),卷積填充padding="valid"即無填充卷積。

將這一部分命名為conv_name_base+'2a',初始化時(shí)利用種子為seed=0。

第一個(gè)BatchNorm是在通道/厚度的軸上進(jìn)行標(biāo)準(zhǔn)化,并命名為bn_name_base+'2a'.

應(yīng)用ReLU激活函數(shù),這里沒有超參數(shù)。

b、主路徑的第二部分:

第二個(gè)CONV2D的過濾器F2大小是(f*f),步長(zhǎng)s大小為(1*1),卷積填充padding="same"即相同卷積。

將這一部分命名為conv_name_base'2b',初始化時(shí)利用種子為seed=0。

第二個(gè)BatchNorm是在通道/厚度的軸上進(jìn)行標(biāo)準(zhǔn)化,并命名為bn_name_base+'2b'.

應(yīng)用ReLU激活函數(shù),這里沒有超參數(shù)。

c、主路徑的第三部分:

?

第三個(gè)CONV2D的過濾器F3大小是(1*1),步長(zhǎng)s大小為(1*1),卷積填充padding="valid"即無填充卷積。

將這一部分命名為conv_name_base+'2c',初始化時(shí)利用種子為seed=0。

第三個(gè)BatchNorm是在通道/厚度的軸上進(jìn)行標(biāo)準(zhǔn)化,并命名為bn_name_base +'2c'.

這一部分中沒有應(yīng)用ReLU激活函數(shù)。

d、最后部分:

將shortcut和輸入一起添加到模塊中,然后再應(yīng)用ReLU激活函數(shù),這里沒有超參數(shù)。

#卷積殘差塊——convolutional_block def convolutional_block(X,f,filters,stage,block,s=2):"""param :X -- 輸入的張量,維度為(m, n_H_prev, n_W_prev, n_C_prev)f -- 整數(shù),指定主路徑的中間 CONV 窗口的形狀(過濾器大小)filters -- python整數(shù)列表,定義主路徑的CONV層中的過濾器stage -- 整數(shù),用于命名層,取決于它們?cè)诰W(wǎng)絡(luò)中的位置block --字符串/字符,用于命名層,取決于它們?cè)诰W(wǎng)絡(luò)中的位置s -- 整數(shù),指定使用的步幅return:X -- 卷積殘差塊的輸出,維度為:(n_H, n_W, n_C)"""# 定義基本的名字conv_name_base = "res" + str(stage) + block + "_branch"bn_name_base = "bn" + str(stage) + block + "_branch"# 過濾器F1, F2, F3 = filters# 保存輸入值,后面將需要添加回主路徑X_shortcut = X# 主路徑第一部分X = Conv2D(filters=F1, kernel_size=(1, 1), strides=(s, s), padding="valid",name=conv_name_base + "2a", kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3, name=bn_name_base + "2a")(X)X = Activation("relu")(X)# 主路徑第二部分X = Conv2D(filters=F2, kernel_size=(f, f), strides=(1, 1), padding="same",name=conv_name_base + "2b", kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3, name=bn_name_base + "2b")(X)X = Activation("relu")(X)# 主路徑第三部分X = Conv2D(filters=F3, kernel_size=(1, 1), strides=(1, 1), padding="valid",name=conv_name_base + "2c", kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3, name=bn_name_base + "2c")(X)#shortcut路徑X_shortcut = Conv2D(filters=F3,kernel_size=(1,1),strides=(s,s),padding="valid",name=conv_name_base+"1",kernel_initializer=glorot_uniform(seed=0))(X_shortcut)X_shortcut = BatchNormalization(axis=3,name=bn_name_base+"1")(X_shortcut)# 主路徑最后部分,為主路徑添加shortcut并通過relu激活X = layers.add([X, X_shortcut])X = Activation("relu")(X)return Xtf.reset_default_graph()with tf.Session() as test:np.random.seed(1)A_prev = tf.placeholder("float", [3, 4, 4, 6])X = np.random.randn(3, 4, 4, 6)A = convolutional_block(A_prev, f = 2, filters = [2, 4, 6], stage = 1, block = 'a')test.run(tf.global_variables_initializer())out = test.run([A], feed_dict={A_prev: X, K.learning_phase(): 0})print("out = " + str(out[0][1][1][0])) #運(yùn)行結(jié)果: out = [0.09018463 1.2348977 0.46822017 0.0367176 0. 0.65516603]

運(yùn)行結(jié)果:

out = [0.19716813 0. 1.3561227 2.1713073 0. 1.3324987 ]

2、卷積殘差塊——The convolutional block

(1)、綜述

ResNet的convolutional_block是另一種類型的殘差塊,當(dāng)輸入和輸出尺寸不匹配時(shí),可以使用這種類型的塊。

與identity block恒等殘差塊不同的地方是:在shortcut路徑中是一個(gè)CONV2D的層。

shortcut路徑中的CONV2D層用于將輸入x調(diào)整為不同的尺寸,以便在添加shortcut殘差塊的值返回到主路徑時(shí)需要最后添加的尺寸相匹配(與矩陣Ws的作用相同)。例如,要將激活值維度的高度和寬度縮小2倍,可以使用步長(zhǎng)為2的1x1卷積。shortcut路徑上的CONV2D層路徑不使用任何非線性激活函數(shù)。 它的主要作用是只應(yīng)用一個(gè)(學(xué)習(xí)的)線性函數(shù)來減小輸入的尺寸,使得尺寸匹配后面的添加步驟。

(2)、convolutional_block的細(xì)節(jié)步驟

a、主路徑第一部分

第一個(gè)CONV2D的過濾器F1大小是(1*1),步長(zhǎng)s大小為(s*s),卷積填充padding="valid"即無填充卷積。

將這一部分命名為conv_name_base+'2a'。

第一個(gè)BatchNorm是在通道/厚度的軸上進(jìn)行標(biāo)準(zhǔn)化,并命名為bn_name_base+'2a'.

應(yīng)用ReLU激活函數(shù),這里沒有超參數(shù)。

b、主路徑第二部分

第二個(gè)CONV2D的過濾器F2大小是(f*f),步長(zhǎng)s大小為(1*1),卷積填充padding="same"即相同卷積。

將這一部分命名為conv_name_base+'2b',初始化時(shí)利用種子為seed=0。

第二個(gè)BatchNorm是在通道/厚度的軸上進(jìn)行標(biāo)準(zhǔn)化,并命名為bn_name_base+'2b'.

?應(yīng)用ReLU激活函數(shù),這里沒有超參數(shù)。

c、主路徑第三部分

第三個(gè)CONV2D的過濾器 F3大小是(1*1),步長(zhǎng)s大小為(1*1),卷積填充padding="valid"即無填充卷積。

將這一部分命名為 conv_name_base+'2c',初始化時(shí)利用種子為seed=0。

第三個(gè)BatchNorm是在通道/厚度的軸上進(jìn)行標(biāo)準(zhǔn)化,并命名為bn_name_base+'2c'.

這一部分中沒有應(yīng)用ReLU激活函數(shù)。

d、shortcut 路徑

該部分CONV2D的過濾器 F3大小是(1*1),步長(zhǎng)s大小為(s*s),卷積填充 padding="valid"即無填充卷積。

將這一部分命名為conv_name_base+'1'。

該部分BatchNorm是在通道/厚度的軸上進(jìn)行標(biāo)準(zhǔn)化,并命名為bn_name_base+'1'?

e、最后部分

將shortcut和輸入一起添加到模塊中,然后再應(yīng)用ReLU激活函數(shù),這里沒有超參數(shù)。

#卷積殘差塊——convolutional_blockdef convolutional_block(X,f,filters,stage,block,s=2):"""param :X -- 輸入的張量,維度為(m, n_H_prev, n_W_prev, n_C_prev)f -- 整數(shù),指定主路徑的中間 CONV 窗口的形狀(過濾器大小)filters -- python整數(shù)列表,定義主路徑的CONV層中的過濾器stage -- 整數(shù),用于命名層,取決于它們?cè)诰W(wǎng)絡(luò)中的位置block --字符串/字符,用于命名層,取決于它們?cè)诰W(wǎng)絡(luò)中的位置s -- 整數(shù),指定使用的步幅return:X -- 卷積殘差塊的輸出,維度為:(n_H, n_W, n_C)"""# 定義基本的名字conv_name_base = "res" + str(stage) + block + "_branch"bn_name_base = "bn" + str(stage) + block + "_branch"# 過濾器F1, F2, F3 = filters# 保存輸入值,后面將需要添加回主路徑X_shortcut = X# 主路徑第一部分X = Conv2D(filters=F1, kernel_size=(1, 1), strides=(s, s), padding="valid",name=conv_name_base + "2a", kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3, name=bn_name_base + "2a")(X)X = Activation("relu")(X)# 主路徑第二部分X = Conv2D(filters=F2, kernel_size=(f, f), strides=(1, 1), padding="same",name=conv_name_base + "2b", kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3, name=bn_name_base + "2b")(X)X = Activation("relu")(X)# 主路徑第三部分X = Conv2D(filters=F3, kernel_size=(1, 1), strides=(1, 1), padding="valid",name=conv_name_base + "2c", kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3, name=bn_name_base + "2c")(X)#shortcut路徑X_shortcut = Conv2D(filters=F3,kernel_size=(1,1),strides=(s,s),padding="valid",name=conv_name_base+"1",kernel_initializer=glorot_uniform(seed=0))(X_shortcut)X_shortcut = BatchNormalization(axis=3,name=bn_name_base+"1")(X_shortcut)# 主路徑最后部分,為主路徑添加shortcut并通過relu激活X = layers.add([X, X_shortcut])X = Activation("relu")(X)return Xtf.reset_default_graph()with tf.Session() as test:np.random.seed(1)A_prev = tf.placeholder("float", [3, 4, 4, 6])X = np.random.randn(3, 4, 4, 6)A = convolutional_block(A_prev, f = 2, filters = [2, 4, 6], stage = 1, block = 'a')test.run(tf.global_variables_initializer())out = test.run([A], feed_dict={A_prev: X, K.learning_phase(): 0})print("out = " + str(out[0][1][1][0]))

運(yùn)行結(jié)果:

out = [0.09018463 1.2348977 0.46822017 0.0367176 0. 0.65516603]

三、在Keras框架下構(gòu)建50層的殘差卷積神經(jīng)網(wǎng)絡(luò)ResNet

?


50層的殘差卷積神經(jīng)網(wǎng)絡(luò)ResNet的細(xì)節(jié)部分:

0、為輸入224*224*3填充大小為(3*3)的zero_padding。

1、第一階段,輸出大小為:56*56*64

2、第二階段,輸出大小為:56*56*256

3、第三階段,輸出大小為:28*28*512

4、第四階段,輸出大小為:14*14*1024

?5、第五階段,輸出大小為:7*7*2048

6、最后階段,輸出6個(gè)類別

注意:

(1)正如在Keras教程中所看到的,在事先訓(xùn)練模型之前,需要通過編譯模型來配置學(xué)習(xí)過程。

(2)模型訓(xùn)練20次epches,批樣本數(shù)目batch_size = 32,在單個(gè)CPU上運(yùn)行大概每個(gè)epoch需5分鐘。

(3)當(dāng)訓(xùn)練足夠數(shù)量的迭代時(shí),ResNet50是一個(gè)強(qiáng)大的圖像分類模型。

#!/usr/bin/env python # -*- coding:utf-8 -*-#構(gòu)建50層的ResNet神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)圖像的分類 #深度學(xué)習(xí)框架 Keras中實(shí)現(xiàn)import numpy as np import tensorflow as tf from keras import layers from keras.layers import Input,Add,Dense,Activation,ZeroPadding2D,\BatchNormalization,Flatten,Conv2D,AveragePooling2D,MaxPooling2D,GlobalMaxPooling2D from keras.models import Model,load_model from keras.preprocessing import image from keras.utils import layer_utils from keras.utils.data_utils import get_file from keras.applications.imagenet_utils import preprocess_input from keras.utils.vis_utils import model_to_dot from keras.utils import plot_model from keras.initializers import glorot_uniform import pydoc from IPython.display import SVG from resnets_utils import * import scipy.misc from matplotlib.pyplot import imshowimport keras.backend as K K.set_image_data_format("channels_last") K.set_learning_phase(1)#恒等模塊——identity_block def identity_block(X,f,filters,stage,block):"""三層的恒等殘差塊param :X -- 輸入的張量,維度為(m, n_H_prev, n_W_prev, n_C_prev)f -- 整數(shù),指定主路徑的中間 CONV 窗口的形狀filters -- python整數(shù)列表,定義主路徑的CONV層中的過濾器數(shù)目stage -- 整數(shù),用于命名層,取決于它們?cè)诰W(wǎng)絡(luò)中的位置block --字符串/字符,用于命名層,取決于它們?cè)诰W(wǎng)絡(luò)中的位置return:X -- 三層的恒等殘差塊的輸出,維度為:(n_H, n_W, n_C)"""#定義基本的名字conv_name_base = "res"+str(stage)+block+"_branch"bn_name_base = "bn"+str(stage)+block+"_branch"#過濾器F1,F2,F3 = filters#保存輸入值,后面將需要添加回主路徑X_shortcut = X#主路徑第一部分X = Conv2D(filters=F1,kernel_size=(1,1),strides=(1,1),padding="valid",name=conv_name_base+"2a",kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3,name=bn_name_base+"2a")(X)X = Activation("relu")(X)# 主路徑第二部分X = Conv2D(filters=F2,kernel_size=(f,f),strides=(1,1),padding="same",name=conv_name_base+"2b",kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3,name=bn_name_base+"2b")(X)X = Activation("relu")(X)# 主路徑第三部分X = Conv2D(filters=F3,kernel_size=(1,1),strides=(1,1),padding="valid",name=conv_name_base+"2c",kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3,name=bn_name_base+"2c")(X)# 主路徑最后部分,為主路徑添加shortcut并通過relu激活X = layers.add([X,X_shortcut])X = Activation("relu")(X)return Xtf.reset_default_graph() with tf.Session() as sess:np.random.seed(1)A_prev = tf.placeholder("float",shape=[3,4,4,6])X = np.random.randn(3,4,4,6)A = identity_block(A_prev,f=2,filters=[2,4,6],stage=1,block="a")sess.run(tf.global_variables_initializer())out = sess.run([A],feed_dict={A_prev:X,K.learning_phase():0})print("out = "+str(out[0][1][1][0]))#卷積殘差塊——convolutional_block def convolutional_block(X,f,filters,stage,block,s=2):"""param :X -- 輸入的張量,維度為(m, n_H_prev, n_W_prev, n_C_prev)f -- 整數(shù),指定主路徑的中間 CONV 窗口的形狀(過濾器大小,ResNet中f=3)filters -- python整數(shù)列表,定義主路徑的CONV層中過濾器的數(shù)目stage -- 整數(shù),用于命名層,取決于它們?cè)诰W(wǎng)絡(luò)中的位置block --字符串/字符,用于命名層,取決于它們?cè)诰W(wǎng)絡(luò)中的位置s -- 整數(shù),指定使用的步幅return:X -- 卷積殘差塊的輸出,維度為:(n_H, n_W, n_C)"""# 定義基本的名字conv_name_base = "res" + str(stage) + block + "_branch"bn_name_base = "bn" + str(stage) + block + "_branch"# 過濾器F1, F2, F3 = filters# 保存輸入值,后面將需要添加回主路徑X_shortcut = X# 主路徑第一部分X = Conv2D(filters=F1, kernel_size=(1, 1), strides=(s, s), padding="valid",name=conv_name_base + "2a", kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3, name=bn_name_base + "2a")(X)X = Activation("relu")(X)# 主路徑第二部分X = Conv2D(filters=F2, kernel_size=(f, f), strides=(1, 1), padding="same",name=conv_name_base + "2b", kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3, name=bn_name_base + "2b")(X)X = Activation("relu")(X)# 主路徑第三部分X = Conv2D(filters=F3, kernel_size=(1, 1), strides=(1, 1), padding="valid",name=conv_name_base + "2c", kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3, name=bn_name_base + "2c")(X)#shortcut路徑X_shortcut = Conv2D(filters=F3,kernel_size=(1,1),strides=(s,s),padding="valid",name=conv_name_base+"1",kernel_initializer=glorot_uniform(seed=0))(X_shortcut)X_shortcut = BatchNormalization(axis=3,name=bn_name_base+"1")(X_shortcut)# 主路徑最后部分,為主路徑添加shortcut并通過relu激活X = layers.add([X, X_shortcut])X = Activation("relu")(X)return Xtf.reset_default_graph()with tf.Session() as test:np.random.seed(1)A_prev = tf.placeholder("float", [3, 4, 4, 6])X = np.random.randn(3, 4, 4, 6)A = convolutional_block(A_prev, f = 2, filters = [2, 4, 6], stage = 1, block = 'a')test.run(tf.global_variables_initializer())out = test.run([A], feed_dict={A_prev: X, K.learning_phase(): 0})print("out = " + str(out[0][1][1][0]))#50層ResNet模型構(gòu)建 def ResNet50(input_shape = (64,64,3),classes = 6):"""構(gòu)建50層的ResNet,結(jié)構(gòu)為:CONV2D -> BATCHNORM -> RELU -> MAXPOOL -> CONVBLOCK -> IDBLOCK*2 -> CONVBLOCK -> IDBLOCK*3-> CONVBLOCK -> IDBLOCK*5 -> CONVBLOCK -> IDBLOCK*2 -> AVGPOOL -> TOPLAYERparam :input_shape -- 數(shù)據(jù)集圖片的維度classes -- 整數(shù),分類的數(shù)目return:model -- Keras中的模型實(shí)例"""#將輸入定義為維度大小為 input_shape的張量X_input = Input(input_shape)# Zero-PaddingX = ZeroPadding2D((3,3))(X_input)# Stage 1X = Conv2D(64,kernel_size=(7,7),strides=(2,2),name="conv1",kernel_initializer=glorot_uniform(seed=0))(X)X = BatchNormalization(axis=3,name="bn_conv1")(X)X = Activation("relu")(X)X = MaxPooling2D(pool_size=(3,3),strides=(2,2))(X)# Stage 2X = convolutional_block(X,f=3,filters=[64,64,256],stage=2,block="a",s=1)X = identity_block(X,f=3,filters=[64,64,256],stage=2,block="b")X = identity_block(X,f=3,filters=[64,64,256],stage=2,block="c")#Stage 3X = convolutional_block(X,f=3,filters=[128,128,512],stage=3,block="a",s=2)X = identity_block(X,f=3,filters=[128,128,512],stage=3,block="b")X = identity_block(X,f=3,filters=[128,128,512],stage=3,block="c")X = identity_block(X,f=3,filters=[128,128,512],stage=3,block="d")# Stage 4X = convolutional_block(X,f=3,filters=[256,256,1024],stage=4,block="a",s=2)X = identity_block(X,f=3,filters=[256,256,1024],stage=4,block="b")X = identity_block(X,f=3,filters=[256,256,1024],stage=4,block="c")X = identity_block(X,f=3,filters=[256,256,1024],stage=4,block="d")X = identity_block(X,f=3,filters=[256,256,1024],stage=4,block="e")X = identity_block(X,f=3,filters=[256,256,1024],stage=4,block="f")#Stage 5X = convolutional_block(X,f=3,filters=[512,512,2048],stage=5,block="a",s=2)X = identity_block(X,f=3,filters=[256,256,2048],stage=5,block="b")X = identity_block(X,f=3,filters=[256,256,2048],stage=5,block="c")#最后階段#平均池化X = AveragePooling2D(pool_size=(2,2))(X)#輸出層X = Flatten()(X) #展平X = Dense(classes,activation="softmax",name="fc"+str(classes),kernel_initializer=glorot_uniform(seed=0))(X)#創(chuàng)建模型model = Model(inputs=X_input,outputs=X,name="ResNet50")return model#運(yùn)行構(gòu)建的模型圖 model = ResNet50(input_shape=(64,64,3),classes=6)#編譯模型來配置學(xué)習(xí)過程 model.compile(optimizer="adam",loss="categorical_crossentropy",metrics=["accuracy"])#加載數(shù)據(jù)集 X_train_orig, Y_train_orig, X_test_orig, Y_test_orig, classes = load_dataset()# Normalize image vectors X_train = X_train_orig/255. X_test = X_test_orig/255.# Convert training and test labels to one hot matrices Y_train = convert_to_one_hot(Y_train_orig, 6).T Y_test = convert_to_one_hot(Y_test_orig, 6).Tprint ("number of training examples = " + str(X_train.shape[0])) print ("number of test examples = " + str(X_test.shape[0])) print ("X_train shape: " + str(X_train.shape)) print ("Y_train shape: " + str(Y_train.shape)) print ("X_test shape: " + str(X_test.shape)) print ("Y_test shape: " + str(Y_test.shape))#訓(xùn)練模型 model.fit(X_train,Y_train,epochs=20,batch_size=32)#測(cè)試集性能測(cè)試 preds = model.evaluate(X_test,Y_test) print("Loss = "+str(preds[0])) print("Test Accuracy ="+str(preds[1]))

四、在tensorflow框架下構(gòu)建殘差卷積神經(jīng)網(wǎng)絡(luò)ResNet V2

?ResNet V2中的殘差學(xué)習(xí)單元為 bottleneck,與ResNet V1的主要區(qū)別在于:

1、在每一層前都使用了Batch Normalization;2、對(duì)輸入進(jìn)行preactivation,而不是在卷積進(jìn)行激活函數(shù)處理。

(一)基礎(chǔ)知識(shí)應(yīng)用

1、Python內(nèi)建的集合模塊——collections

--------------------- 作者:loveliuzz 來源:CSDN 原文:https://blog.csdn.net/loveliuzz/article/details/79117397?utm_source=copy 版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!

總結(jié)

以上是生活随笔為你收集整理的ResNet在分别在Keras和tensorflow框架下的应用案例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

超碰97在线资源 | 亚洲精品看片 | 日韩欧美观看 | 免费在线观看污 | 天天色天天干天天 | 毛片永久新网址首页 | 国产亚洲精品久久久久久大师 | www.久久91| 国产精品一区二区电影 | 最近免费观看的电影完整版 | 亚洲精品美女久久久 | 91网页版在线观看 | 天天操天天色天天射 | 精品国产aⅴ麻豆 | 国产第一页在线观看 | 国产麻豆剧传媒免费观看 | 免费aa大片 | 国产粉嫩在线观看 | 亚洲 欧美 国产 va在线影院 | 欧美男男激情videos | 91成人精品国产刺激国语对白 | 中文字幕在线视频一区 | 日韩在线观看精品 | 日韩色视频在线观看 | 日本女人的性生活视频 | 久久免费视频精品 | 在线观看视频精品 | 中文日韩在线视频 | 亚洲免费公开视频 | 中文字幕在线观看日本 | 亚洲撸撸 | 亚洲天天摸日日摸天天欢 | 久久久午夜电影 | 69精品人人人人 | 在线视频欧美日韩 | 国产精品18久久久久久久久 | 韩国av不卡 | 国内三级在线 | 亚洲精品乱码白浆高清久久久久久 | 日韩中文字幕免费看 | 久久久久久福利 | 激情五月婷婷综合网 | 欧美在线视频一区二区三区 | 国产精品成人自产拍在线观看 | 久久人人爽人人爽人人片av免费 | av中文字幕在线免费观看 | 亚洲精品午夜一区人人爽 | 免费看亚洲毛片 | 国产高清视频在线观看 | 欧美特一级片 | 国产一级片免费播放 | 天天综合网天天综合色 | 国产精品久久久久999 | 99久久99视频 | avwww在线| 97日日碰人人模人人澡分享吧 | 国产精品中文在线 | 国产一级高清视频 | 久久精品成人 | 九九色网| 欧美日在线观看 | 有没有在线观看av | 欧美成天堂网地址 | 免费a一级| 九九热只有精品 | 激情动态| 婷婷综合影院 | 欧美性一级观看 | 日本精品中文字幕在线观看 | 超碰免费公开 | 超碰av在线 | 91尤物国产尤物福利在线播放 | 国产黄色精品在线观看 | 国产一级黄大片 | 国产91在线免费视频 | 天天操天天干天天综合网 | 国产69精品久久久久久 | 中文字幕在线观看网 | 在线观看av网 | 又色又爽又激情的59视频 | 国产精品一区二区久久精品爱涩 | 久久久精品视频成人 | 五月天色丁香 | av一区二区三区在线观看 | 免费三及片| 国产小视频福利在线 | 中文字幕国产一区 | 在线观看中文字幕视频 | 88av视频| 天天做天天射 | a黄色一级 | 中文字幕在线观看免费 | 午夜12点 | 亚洲精品乱码久久久久久高潮 | 亚洲精品国精品久久99热一 | 欧美一级日韩免费不卡 | 亚洲国产精品成人av | 欧美色综合| 欧美综合久久 | av中文字幕在线播放 | 日韩r级电影在线观看 | 婷婷日| 四虎国产精品成人免费4hu | 在线观看av大片 | 久久伦理电影网 | 国产97在线看 | 99性视频 | 亚欧日韩av| 久久久片 | 国产精品扒开做爽爽的视频 | 亚洲精品在线观看免费 | 搡bbbb搡bbb视频 | 午夜视频免费在线观看 | 五月婷婷,六月丁香 | 91污视频在线观看 | 开心激情久久 | www.av中文字幕.com | 五月婷婷中文网 | 黄污网站在线 | 国产日韩欧美精品在线观看 | 欧美日韩一区二区视频在线观看 | 狂野欧美激情性xxxx欧美 | 大型av综合网站 | 日韩电影中文字幕 | 国产资源中文字幕 | 亚洲国产一区二区精品专区 | 久久久www | 国产va精品免费观看 | 99精品乱码国产在线观看 | 亚洲欧美精品一区二区 | 免费黄色av片 | 欧美性色黄 | 午夜久操 | 国产视频99| 亚洲精品国偷自产在线91正片 | 96av视频| 久久国内精品 | 综合色在线 | 欧美少妇xxx| 亚洲精品中文在线资源 | 视频一区二区在线观看 | 国产精品免费久久久久久 | 人人插人人看 | 久久亚洲日本 | 波多野结衣视频一区二区三区 | 99精品免费网 | 日韩性久久 | 欧美日韩xx | 91精品一区二区三区久久久久久 | 久久久久久伊人 | 91欧美日韩国产 | 视频一区在线播放 | 亚洲一级黄色片 | 久久久久久国产一区二区三区 | 国产69精品久久久久9999apgf | 欧美性色综合网站 | 免费中午字幕无吗 | 久久精品网站免费观看 | 久久婷婷丁香 | 天天av综合网| 亚洲成人软件 | 国产在线精品区 | 日一日干一干 | 国产亚洲在线 | 国产自在线观看 | 日韩资源在线播放 | 手机看国产毛片 | 在线视频 亚洲 | 欧美91在线 | 夜色.com | 日日日天天天 | 日韩视频免费在线 | 亚洲日日射 | 久久久久久高清 | 另类五月激情 | 久久日韩精品 | 91三级视频 | 日韩在线视频播放 | 97超碰人人澡人人爱学生 | 麻豆视频在线观看免费 | 国产不卡高清 | 日本婷婷色| 国产在线播放一区二区三区 | 天天操天天干天天爱 | 中文字幕色网站 | 91av在线视频播放 | 福利视频区 | av电影不卡在线 | 国产精品毛片一区二区 | 亚洲女欲精品久久久久久久18 | 亚洲国产无 | 国产手机在线播放 | 国产黄色片在线免费观看 | 色综合天天狠狠 | 韩国在线一区二区 | 日韩av视屏在线观看 | 麻豆首页 | 久久成人视屏 | 少妇精品久久久一区二区免费 | 中文字幕一区三区 | 视频在线观看日韩 | 日本三级大片 | 成 人 黄 色 视频 免费观看 | 国产无吗一区二区三区在线欢 | 免费www视频 | 99精品视频免费观看视频 | 在线看欧美 | 久久超碰99| 天堂中文在线视频 | www.久久色 | www.天天色.com | 麻豆久久一区 | 国偷自产中文字幕亚洲手机在线 | 一区久久久 | 五月花激情 | 久久永久免费视频 | www.com久久久 | 久久久精品福利视频 | 中文字幕资源站 | 日韩精品极品视频 | 日韩电影一区二区三区在线观看 | 黄色www | 99热这里只有精品在线观看 | 在线欧美a| 国产日本亚洲高清 | 国产精品一区在线 | 狠狠狠色丁香婷婷综合激情 | 五月天精品视频 | 欧美 日韩 国产 成人 在线 | 亚洲高清国产视频 | 欧美精品少妇xxxxx喷水 | 日韩www在线| 精品在线视频观看 | 久久国产女人 | 中文字幕日韩av | 少妇bbb搡bbbb搡bbbb | 国产麻豆电影在线观看 | 成人一级在线 | 96av麻豆蜜桃一区二区 | 天天干夜夜爽 | 国产精品成人一区二区三区吃奶 | 精品日韩av| 手机av电影在线 | 久久精品a| 一级黄色片在线播放 | 亚洲成年片 | 免费看的黄色片 | 国产黄视频在线观看 | www.99av| 一级免费看 | av在线进入 | www.97色.com| 国产精品一区二区免费视频 | 狠狠网亚洲精品 | 成人91在线 | 亚洲高清激情 | 精品久久久久久久久久久院品网 | 丰满少妇一级 | 日韩欧美在线高清 | 天天舔天天搞 | 欧美日韩免费在线观看视频 | 五月婷婷国产 | 99热最新| 精品中文字幕视频 | 免费看的黄色 | 久久人人97超碰com | 久久久久久综合网天天 | av看片网| 久久爱综合 | 亚洲视频播放 | 亚洲精品综合在线观看 | 久久久精品日本 | 成人免费中文字幕 | 在线观看你懂的网站 | 国产麻豆视频网站 | 免费国产亚洲视频 | 国产99久久九九精品免费 | 欧美午夜理伦三级在线观看 | 九九99| 96av麻豆蜜桃一区二区 | 国产91精品欧美 | 亚洲妇女av | 日本在线观看中文字幕无线观看 | 亚洲另类xxxx| 日本中文字幕在线视频 | 美女网站视频久久 | 中文字幕国内精品 | 国语对白少妇爽91 | 很黄很污的视频网站 | 精品国产一区二区在线 | 深爱激情综合网 | 黄色一级免费网站 | 公与妇乱理三级xxx 在线观看视频在线观看 | 国产偷v国产偷∨精品视频 在线草 | 99精品在线免费观看 | 黄色在线免费观看网址 | 国产精品区在线观看 | 亚洲不卡av一区二区三区 | 成人中文字幕在线 | 伊人国产女| 久草视频看看 | 91中文字幕网 | 中文字幕在线观看免费 | 国产一级91 | 最新一区二区三区 | 亚洲精品国偷自产在线91正片 | 国产精品6999成人免费视频 | 国产成人精品一区二 | 日韩高清激情 | 日韩在线视频播放 | 中文字幕在线免费看线人 | 亚洲精品自拍视频在线观看 | 福利在线看片 | 国产欧美精品在线观看 | 午夜视频在线观看一区 | 成人午夜电影久久影院 | 人人爽人人爽人人片 | 99久久精品国产毛片 | 亚洲精品欧美专区 | 天天操天天干天天爱 | 五月婷婷综合网 | 在线免费观看视频你懂的 | av综合网址 | 久久久久久欧美二区电影网 | 免费看国产a | 最近免费中文字幕大全高清10 | 97视频网址 | 波多野结衣在线观看一区二区三区 | 久久精品伊人 | www.久草.com| 91久久偷偷做嫩草影院 | 免费高清av在线看 | 在线观看视频 | 欧美一区影院 | 一二三区高清 | 天天操天天摸天天射 | 91香蕉视频黄色 | 成人黄色大片网站 | 成片人卡1卡2卡3手机免费看 | 久久免费观看少妇a级毛片 久久久久成人免费 | 日韩在线观看中文字幕 | 亚洲精品美女久久久 | 日韩在线观看视频在线 | 伊人婷婷网 | 四虎成人精品永久免费av | 9热精品 | 性色av香蕉一区二区 | 在线观看亚洲视频 | 中文字幕av免费观看 | 国产色婷婷精品综合在线手机播放 | 处女av在线 | 中文字幕有码在线 | 色视频网站在线观看一=区 a视频免费在线观看 | 亚洲午夜精品久久久久久久久久久久 | 国产精品久久一区二区三区不卡 | www好男人| 天天色天| 中文字幕精品一区二区精品 | 成人av.com| 日韩视频1 | 国产91免费在线观看 | 最新日韩精品 | 911免费视频 | 久久人操 | 三级a毛片 | 黄色一二级片 | 日日成人网 | 免费a级毛片在线看 | 国产又粗又猛又爽 | 国产一级不卡毛片 | 国产精品麻豆99久久久久久 | 五月天丁香亚洲 | 一区二区三区在线电影 | 免费亚洲电影 | 日本成址在线观看 | 天天操天天色天天射 | 婷婷视频在线播放 | 中文字幕乱视频 | 国产精品久久久久久爽爽爽 | 免费观看一区二区 | 国内精品久久久久久中文字幕 | 国产伦理久久 | 97视频人人澡人人爽 | 国产福利在线不卡 | 在线天堂中文www视软件 | 久久久久久国产精品免费 | 欧美成人日韩 | 天天草天天干天天射 | 欧美一区二区在线 | 久久免费视频5 | 国产区av在线 | 亚洲午夜精品久久久久久久久久久久 | 天天色天天操综合 | 国产日韩在线观看一区 | 亚州精品天堂中文字幕 | 国产精品久久亚洲 | 91精品国产三级a在线观看 | 国产黄色在线观看 | 在线91精品| 精品产品国产在线不卡 | 久久精品网站视频 | 天天躁天天躁天天躁婷 | 亚洲不卡在线 | 欧美激情一区不卡 | 99自拍视频在线观看 | 亚洲涩涩网站 | 在线观看va| 亚洲高清视频在线播放 | 国产在线观看午夜 | 亚洲国产中文字幕在线观看 | 亚洲国产精品成人精品 | v片在线播放 | 香蕉国产91 | 黄免费在线观看 | 婷婷丁香激情 | 黄色www免费| 久久中文字幕导航 | 日日操天天操夜夜操 | 成年人黄色在线观看 | 九九视频一区 | 日韩综合精品 | 精品国产伦一区二区三区观看体验 | 中文av字幕在线观看 | 91九色视频在线观看 | www.狠狠 | 日韩免费看 | 麻豆91精品| 欧美夫妻性生活电影 | 国产精品乱码一区二三区 | 精品综合久久久 | 99视频+国产日韩欧美 | 99在线播放 | 亚洲激情综合 | 国产精品久久久久久久午夜片 | 色无五月 | 国产精品毛片一区 | 国产原创中文在线 | 亚洲精品午夜国产va久久成人 | 超碰免费在线公开 | 在线观看完整版免费 | 99自拍视频在线观看 | 亚洲欧洲成人精品av97 | 国产成人av在线影院 | 欧美大片mv免费 | 91热| 天天综合网久久 | 国产资源站 | 亚洲免费专区 | 国产精品国产自产拍高清av | 亚洲精品大片www | 精品999在线 | 欧美孕妇与黑人孕交 | 在线观看视频精品 | 久精品视频在线观看 | 99这里有精品 | 午夜精品久久久久久久99 | 亚洲精品国产欧美在线观看 | 狠狠色丁香婷婷综合最新地址 | 一区二区三区电影大全 | 亚洲丝袜中文 | 久久免费视频2 | 成年人国产在线观看 | 色偷偷网站视频 | 狠狠干免费| 中文字幕成人av | 国产在线毛片 | av成人资源 | 91免费网站在线观看 | 亚洲va欧美va国产va黑人 | www四虎影院 | 精品一区在线看 | 久久免费精品视频 | 日韩91在线| av在线免费观看网站 | 亚洲成人网在线 | 日本三级不卡 | 国产精品高潮在线观看 | 在线观看日韩中文字幕 | 久久九九久久九九 | 国产精品久久久久永久免费 | 天天操比| 精品成人久久 | 成人资源站| 人人人爽 | 97成人在线观看视频 | 在线观看亚洲国产精品 | www国产亚洲 | av电影免费在线 | 免费看一级 | 欧美巨乳网| 免费观看成人av | 日韩欧美视频免费观看 | 日韩在线免费高清视频 | 国产99免费 | 久久av免费 | 91在线资源 | 波多野结衣精品视频 | 色网站国产精品 | 黄色三级免费网址 | 91免费黄视频 | 日日碰狠狠躁久久躁综合网 | www.成人精品| 99视频导航| 久久久久久在线观看 | 欧美日韩中文在线视频 | 久久这里只有精品9 | av久久久| 蜜臀久久99精品久久久久久网站 | 亚洲国产高清在线 | 人人澡超碰碰97碰碰碰软件 | 肉色欧美久久久久久久免费看 | 国产中文字幕一区二区 | 精品一区二区三区四区在线 | 人人澡视频 | 国产精品电影在线 | 欧美激情综合五月色丁香 | 国产婷婷色 | 狠狠色香婷婷久久亚洲精品 | 成人久久久久久久久久 | 成人免费观看视频大全 | 狂野欧美激情性xxxx欧美 | 日日干天天爽 | 热久久在线视频 | 亚洲无线视频 | 欧美精品在线观看免费 | 欧美日韩国产在线 | 高清国产午夜精品久久久久久 | 成年人视频在线观看免费 | 日韩精品三区四区 | 日韩欧美在线不卡 | 狠狠狠色| 丝袜网站在线观看 | 国产在线看 | 欧美日韩高清在线观看 | 97精品国产91久久久久久久 | 丁香婷婷久久久综合精品国产 | 色狠狠一区二区 | 日日夜夜噜 | 中文字幕免费久久 | www..com毛片| 欧美精品小视频 | 久久成人免费 | 91精品1区 | 中文字幕一区二区三区四区久久 | 高清av在线免费观看 | 91亚洲精品久久久蜜桃借种 | 99视屏 | 天干啦夜天干天干在线线 | 一本色道久久精品 | 亚洲国产午夜 | 五月天久久婷 | 欧美日韩成人 | 日韩精品一区二区在线观看 | 国产亚洲成av人片在线观看桃 | 成人av一区二区三区 | 九色视频自拍 | 国产高清黄色 | 国产精品久一 | 日韩电影中文,亚洲精品乱码 | 在线观看视频一区二区三区 | 成人免费观看视频网站 | av中文国产 | 日韩毛片精品 | 美女免费视频一区二区 | 国产精品久久99综合免费观看尤物 | 国产一区二区不卡在线 | 国产精品美女久久久久久久 | 在线免费观看成人 | 一区二区三区在线免费观看视频 | 日韩中文字幕免费在线播放 | 国产一区二区在线免费观看 | 精品美女国产在线 | 夜夜嗨av色一区二区不卡 | 亚洲久草在线 | 天天视频亚洲 | 精品国产视频在线 | 国产福利精品一区二区 | 黄色av网站在线免费观看 | 久久精品视频4 | 免费黄色网址大全 | x99av成人免费 | 久久精品电影 | 国产精品中文字幕在线观看 | 亚洲欧美日韩一区二区三区在线观看 | 日韩爱爱网站 | 国产精品久久久视频 | 激情网站网址 | 午夜精品一区二区三区四区 | 激情综合狠狠 | 日韩高清在线一区二区三区 | 最近高清中文字幕 | 日本一区二区三区免费看 | av九九九 | 在线中文字幕一区二区 | 欧美激情一区不卡 | 国产系列 在线观看 | 久久好看免费视频 | 日韩在线视频免费播放 | 九九热免费精品视频 | 在线观看av国产 | 日韩在线影视 | 人人舔人人爱 | 免费网站污| 欧美日韩免费在线视频 | 在线观看视频你懂 | 精品国产一区二区三区噜噜噜 | 成人午夜精品久久久久久久3d | av免费电影在线 | 97超碰伊人 | 国产精品视频在线看 | 免费看黄在线网站 | 婷婷av网 | av片在线观看免费 | 最近乱久中文字幕 | 91精品夜夜| 国产精品自产拍在线观看 | 中文在线最新版天堂 | 国产精品短视频 | 成人国产精品一区 | 91视频91自拍| 一级α片免费看 | 香蕉网在线播放 | 综合久久综合久久 | 国内久久精品视频 | 国产精品久久久久影院日本 | 天天综合久久综合 | 99久久精品免费看 | 日韩电影一区二区在线观看 | 成人99免费视频 | 91av在线免费观看 | 国产免费久久av | 天天色播 | 日韩黄色免费电影 | 国产手机在线视频 | 国产精品一区二 | 西西4444www大胆艺术 | www麻豆视频 | 久久久久久久久久影院 | 国产无套精品久久久久久 | 91亚洲精品久久久蜜桃网站 | 三上悠亚在线免费 | 色偷偷88欧美精品久久久 | 91男人影院| 一区二区三区视频 | 国产一级a毛片视频爆浆 | 国产不卡视频在线 | 天天综合入口 | 麻花传媒mv免费观看 | 亚洲人在线7777777精品 | 国产一二区在线观看 | 国产一级三级 | 91少妇精拍在线播放 | 97人人射 | 涩涩网站免费 | 国产在线国偷精品产拍 | 四虎成人精品 | 中文字幕免费高清 | 日韩理论片 | 在线播放精品一区二区三区 | www.888.av| 午夜免费久久看 | 最近中文字幕大全中文字幕免费 | 久久短视频 | a视频免费看 | 高清av影院 | 人人射av | 精品国产乱码久久 | 最近高清中文字幕 | 欧美在线1区 | 激情久久婷婷 | 国产精品porn| av天天色| 高清国产午夜精品久久久久久 | 奇米影视777四色米奇影院 | 999视频网站 | 国产在线黄 | 少妇av片 | 91黄色小视频 | 中文字幕电影一区 | 国产精品1区 | 午夜电影一区 | 91在线文字幕 | 久久精品99国产精品酒店日本 | 国产成人精品综合久久久 | 色婷婷激情综合 | 天天摸夜夜添 | 精品国产一区二区三区久久影院 | 三级午夜片 | 97视频在线免费播放 | 永久av免费在线观看 | 久久tv| 国产人成免费视频 | 人人网av | 玖玖玖国产精品 | 国产色婷婷在线 | 天天拍天天爽 | 婷婷久久一区 | 毛片区 | 免费看的黄色小视频 | 日韩免费一区二区在线观看 | 国产亚洲精品久久19p | 欧美亚洲久久 | 国产精品麻豆果冻传媒在线播放 | 2021国产在线视频 | 亚洲欧美日韩在线一区二区 | 日韩视 | 超碰午夜 | 久久综合九色综合网站 | 亚洲一区二区三区毛片 | 西西人体www444| 91精品国产九九九久久久亚洲 | 国产亚洲精品女人久久久久久 | 成人在线免费av | 在线影院av | 激情五月在线观看 | 免费在线观看av网站 | 国产精品国产三级国产不产一地 | 麻豆视频免费在线 | 欧美色伊人 | 亚洲综合在线一区二区三区 | 欧美a级在线 | 人人玩人人添人人澡97 | 亚洲精品高清一区二区三区四区 | 国产精在线 | 日韩在线电影观看 | 99免费观看视频 | 国产福利精品在线观看 | 亚洲天堂网视频在线观看 | 精品国产理论 | 在线激情av电影 | 麻花豆传媒一二三产区 | 天天色天天色 | 成人免费看黄 | 在线视频 91 | 射射射综合网 | 激情视频免费在线 | 日韩天天操 | 国产精品久久久久四虎 | 免费观看午夜视频 | 日日日操 | 在线观看你懂的网址 | 成人av高清在线 | 成人国产精品一区二区 | 二区中文字幕 | 日韩精品免费一区二区三区 | 久久夜靖品 | 亚洲午夜av久久乱码 | 亚洲 欧美 精品 | 亚洲一级片免费观看 | 高清久久久久久 | 国产91精品一区二区麻豆网站 | 人人干人人做 | 国产精品99精品 | 亚洲人人av | 国产成人av电影 | 国产 字幕 制服 中文 在线 | 日韩精品短视频 | 久草在线精品观看 | 国产一级视屏 | 欧洲激情在线 | 日韩av手机在线观看 | 久久久99精品免费观看乱色 | 亚洲精品乱码久久久久久蜜桃不爽 | 欧美日产在线观看 | 中文国产在线观看 | 99久精品视频| 日韩一级电影网站 | 99在线观看精品 | 国产精品三级视频 | 国产精品久久久久永久免费看 | 亚洲精欧美一区二区精品 | 午夜精品一区二区三区四区 | 超碰在线人人艹 | 欧美天堂视频在线 | 中文字幕在线观看免费高清完整版 | 9999免费视频 | 伊人成人激情 | 国产精品专区一 | 在线国产高清 | 国产精品久久99精品毛片三a | 91精品久久久久久综合五月天 | 国产一区二区日本 | 制服丝袜天堂 | 97品白浆高清久久久久久 | 精品美女国产在线 | 蜜桃视频精品 | 日日碰狠狠躁久久躁综合网 | 在线看一级片 | 国产精品你懂的在线观看 | 美女视频黄,久久 | 国产一二三精品 | 国产精品入口66mio女同 | 日本免费久久高清视频 | 中文在线www | 欧美另类69 | 视频在线观看入口黄最新永久免费国产 | 久久69av| 97天堂网 | 亚洲欧美一区二区三区孕妇写真 | 久久开心激情 | 亚洲每日更新 | 97精品超碰一区二区三区 | av资源在线看 | 成人毛片在线视频 | 精品人人人人 | 99热在线网站 | 丁香婷婷激情五月 | 色网免费观看 | 色婷婷欧美 | 久久久久久久久久亚洲精品 | 99久热在线精品视频 | 国产一区视频在线 | 中文字幕av一区二区三区四区 | 国产精品免费久久久久久久久久中文 | 国产日韩欧美视频 | 国产精品久久久久av免费 | 亚洲视频精品 | 波多野结衣一区二区 | 国产99久久精品一区二区300 | 欧美影片 | 区一区二区三区中文字幕 | 亚洲激情综合网 | 中文字幕在线观看国产 | 中文伊人 | a天堂最新版中文在线地址 久久99久久精品国产 | 9i看片成人免费看片 | 在线国产激情视频 | 色狠狠一区二区 | 亚洲视频高清 | 国产中文视频 | 精品亚洲一区二区三区 | 悠悠av资源片 | 日韩aⅴ视频 | 综合激情网... | 精品99在线 | 成人免费在线视频 | 玖玖视频免费在线 | 狠狠的操你 | 91激情在线视频 | 亚洲高清久久久 | 欧美91片| 久久九九久久 | 成人精品久久 | 在线观看av片 | 欧美成年人在线视频 | 五月婷在线视频 | 国产日韩精品在线 | 色资源中文字幕 | 久久精品欧美一区 | 久久在线免费观看视频 | 日韩二区三区 | 99视频精品免费观看, | 伊人久久国产 | 伊人伊成久久人综合网站 | 99视频精品全部免费 在线 | 午夜精品久久久久久久久久久久久久 | 五月综合激情 | 日韩理论片 | 久久久久久毛片精品免费不卡 | 在线看片成人 | 四虎小视频 | 国产a网站| 日韩免费中文字幕 | 国产五月婷婷 | www最近高清中文国语在线观看 | 色婷婷狠狠五月综合天色拍 | 久久久观看| 久久久国产精品免费 | 国产视频精选 | 婷婷视频导航 | 久久精品欧美一 | 久久涩视频| 国产精品完整版 | aaawww| 在线观看麻豆av | 日本在线观看一区二区 | 亚洲欧美激情精品一区二区 | 欧美日韩在线视频观看 | 91成人黄色 | 区一区二在线 | 在线观看 亚洲 | 久久久综合九色合综国产精品 | 国产精品99久久99久久久二8 | 国产成人精品久久亚洲高清不卡 | 日日干视频| 欧美日韩视频免费 | 久久刺激视频 | 国产在线中文 | 日韩av在线一区二区 | 国产免费亚洲高清 | 久久影视一区 | 婷婷国产v亚洲v欧美久久 | 波多野结衣视频网址 | 欧美日韩在线观看一区二区 | 美女国产在线 | 精品国产激情 | 色婷在线 | 成人午夜精品久久久久久久3d | 狠狠88综合久久久久综合网 | 久视频在线播放 | 一区精品在线 | 精品人人人 | 六月天色婷婷 | 国产一区久久 | 狠狠狠色丁香综合久久天下网 | 亚洲视频国产 | 国产精品女人久久久 | 97香蕉久久国产在线观看 | 久久免费观看视频 | 欧美午夜久久久 | 日韩网站在线观看 | 日本黄色大片儿 | 国产在线观看99 | 久久精品亚洲综合专区 | a亚洲视频 | 欧美日韩国语 | 四虎国产精品免费 | 六月激情久久 | 国产黄色免费电影 | 91视频在线免费下载 | 国产精品毛片一区二区在线看 | 日韩高清 一区 | 欧洲精品在线视频 | 国产精品久久一区二区三区, | 国产精品v欧美精品v日韩 | 日韩在线网址 | 国产在线国偷精品产拍免费yy | 天天干,天天射,天天操,天天摸 | 天天草网站 | 亚洲色视频 | 超碰97网站 | 91精品国自产在线偷拍蜜桃 | 国产精品久久中文字幕 | 久久另类小说 | 亚洲成人精品影院 | 99精品久久精品一区二区 | 麻豆播放| 欧美日韩亚洲在线观看 | 最近2019好看的中文字幕免费 | 香蕉久草 | 久久精品综合 | 久草免费色站 | 中文字幕一区二区三区四区 | 丁香午夜婷婷 | 久久视频精品 | 91精品国产综合久久久久久久 | 视频在线观看入口黄最新永久免费国产 | 久草亚洲视频 | 国产毛片久久 | 日韩最新av在线 | 青草视频免费观看 | 婷婷色社区 | 日韩二区在线观看 | 国产精品99久久久久久小说 | 99久久久国产精品免费99 | 日韩在线免费电影 | 日本激情中文字幕 | 免费观看av | 日韩中文免费视频 | 免费看片成年人 | 成人h动漫在线看 | 天天天操天天天干 | 亚洲国产精品久久久久 | a级一a一级在线观看 | 在线观看日本高清mv视频 | 国产午夜精品一区二区三区四区 | 中文亚洲欧美日韩 | 天天操导航 | 欧洲亚洲国产视频 | 高清av免费一区中文字幕 | avlulu久久精品| 去看片| 天天干夜夜擦 | 最近中文字幕 | 亚洲三级网站 | 人人搞人人爽 | 久久综合中文字幕 | av免费在线看网站 | 999成人免费视频 | 国产午夜精品一区二区三区嫩草 | 国产精品女同一区二区三区久久夜 | 婷婷色网 | 免费在线国产精品 | 大胆欧美gogo免费视频一二区 | 国产综合精品久久 | 国内精品免费 | 久久久久久久久电影 | 婷婷草| 成人黄色电影在线观看 | 96亚洲精品久久 | 狠狠色丁香婷婷综合久久片 | 日本91在线 | 日韩中文字幕免费 | 国产欧美综合在线观看 | 久草在在线 | 国产真实精品久久二三区 | 成人久久久精品国产乱码一区二区 | 综合天天久久 |