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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【DL】网络搭建及训练

發布時間:2024/1/18 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【DL】网络搭建及训练 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能對你有所幫助,不足請指正!共同學習交流🔎

📝個人主頁-Sonhhxg_柒的博客_CSDN博客?📃

🎁歡迎各位→點贊👍 + 收藏?? + 留言📝?

📣系列專欄 - 機器學習【ML】?自然語言處理【NLP】? 深度學習【DL】

?

?🖍foreword

?說明?本人講解主要包括Python、機器學習(ML)、深度學習(DL)、自然語言處理(NLP)等內容。

如果你對這個系列感興趣的話,可以關注訂閱喲👋

文章目錄

1 TensorFlow

1.1 TensorFlow是什么?

1.2 TensorFlow的設計理念是什么?

1.3 TensorFlow特點有哪些?

1.高度的靈活性

2.真正的可移植性

3.多語言支持

4.豐富的算法庫

5.完善的文檔

1.4 TensorFlow的系統架構是怎樣的?

??整個系統從底層到上層可分為七層:?編輯

1.5 TensorFlow編程模型是怎樣的?

1.構建圖

2.啟動圖

1.6 如何基于tensorflow搭建VGG16

2 Pytorch

2.1 Pytorch是什么?

2.2 為什么選擇 Pytorch?

1.簡潔:

2.速度:

3.易用:

4.活躍的社區:

2.3 PyTorch 的架構是怎樣的?

2.4 Pytorch 與 tensorflow 之間的差異在哪里?

2.5 Pytorch有哪些常用工具包?

3 Caffe

3.1 什么是 Caffe?

3.2 Caffe的特點是什么?

3.3 Caffe的設計思想是怎樣的?

3.4 Caffe架構是怎樣的?

1. SyncedMem

2. Blob

3. Layer

4. Net

5. Solver

6. Proto

7. IO

3.5 Caffe的有哪些接口?

1. Caffe Python接口

2. Caffe MATLAB接口

3. Caffe 命令行接口

4 網絡搭建有什么原則?

4.1新手原則。

4.2深度優先原則。

4.3卷積核size一般為奇數。

4.4卷積核不是越大越好。

5 有哪些經典的網絡模型值得我們去學習的?

6 網絡訓練有哪些技巧嗎?

6.1.合適的數據集。

6.2.合適的預處理方法。

6.3.網絡的初始化。

6.4.小規模數據試練。

6.5.設置合理Learning Rate。

6.6.損失函數


1 TensorFlow

1.1 TensorFlow是什么?

??TensorFlow支持各種異構平臺,支持多CPU/GPU、服務器、移動設備,具有良好的跨平臺的特性;TensorFlow架構靈活,能夠支持各種網絡模型,具有良好的通用性;此外,TensorFlow架構具有良好的可擴展性,對OP的擴展支持,Kernel特化方面表現出眾。

??TensorFlow最初由Google大腦的研究員和工程師開發出來,用于機器學習和神經網絡方面的研究,于2015.10宣布開源,在眾多深度學習框架中脫穎而出,在Github上獲得了最多的Star量。

1.2 TensorFlow的設計理念是什么?

TensorFlow的設計理念主要體現在兩個方面:

(1)將圖定義和圖運算完全分開。 ??TensorFlow 被認為是一個“符號主義”的庫。我們知道,編程模式通常分為命令式編程(imperative style programming)和符號式編程(symbolic style programming)。命令式編程就是編寫我們理解的通常意義上的程序,很容易理解和調試,按照原有邏輯執行。符號式編程涉及很多的嵌入和優化,不容易理解和調試,但運行速度相對有所提升。現有的深度學習框架中,Torch 是典型的命令式的,Caffe、MXNet 采用了兩種編程模式混合的方法,而 TensorFlow 完全采用符號式編程。

??符號式計算一般是先定義各種變量,然后建立一個數據流圖,在數據流圖中規定各個變量間的計算關系,最后需要對據流圖進行編譯,但此時的數據流圖還是一個空殼兒,里面沒有任何實際數據,只有把需要運算的輸入放進去后,才能在整個模型中形成數據流,從而形成輸出值。

  例如:

t = 8 + 9 print(t)

??在傳統的程序操作中,定義了 t 的運算,在運行時就執行了,并輸出 17。而在 TensorFlow中,數據流圖中的節點,實際上對應的是 TensorFlow API 中的一個操作,并沒有真正去運行:

import tensorflow as tf t = tf.add(8,9) print(t)#輸出 Tensor{"Add_1:0",shape={},dtype=int32}

??(2)TensorFlow 中涉及的運算都要放在圖中,而圖的運行只發生在會話(session)中。開啟會話后,就可以用數據去填充節點,進行運算;關閉會話后,就不能進行計算了。因此,會話提供了操作運行和 Tensor 求值的環境。

  例如:

import tensorflow as tf #創建圖 a = tf.constant([4.0,5.0]) b = tf.constant([6.0,7.0]) c = a * b #創建會話 sess = tf.Session() #計算c print(sess.run(c)) #進行矩陣乘法,輸出[24.,35.] sess.close()

1.3 TensorFlow特點有哪些?

1.高度的靈活性

??TensorFlow 并不僅僅是一個深度學習庫,只要可以把你的計算過程表示稱一個數據流圖的過程,我們就可以使用 TensorFlow 來進行計算。TensorFlow 允許我們用計算圖的方式建立計算網絡,同時又可以很方便的對網絡進行操作。用戶可以基于 TensorFlow 的基礎上用 python 編寫自己的上層結構和庫,如果TensorFlow沒有提供我們需要的API的,我們也可以自己編寫底層的 C++ 代碼,通過自定義操作將新編寫的功能添加到 TensorFlow 中。

2.真正的可移植性

??TensorFlow 可以在 CPU 和 GPU 上運行,可以在臺式機、服務器、移動設備上運行。你想在你的筆記本上跑一下深度學習的訓練,或者又不想修改代碼,想把你的模型在多個CPU上運行, 亦或想將訓練好的模型放到移動設備上跑一下,這些TensorFlow都可以幫你做到。

3.多語言支持

??TensorFlow采用非常易用的python來構建和執行我們的計算圖,同時也支持 C++ 的語言。我們可以直接寫python和C++的程序來執行TensorFlow,也可以采用交互式的ipython來方便的嘗試我們的想法。當然,這只是一個開始,后續會支持更多流行的語言,比如Lua,JavaScript 或者R語言。

4.豐富的算法庫

??TensorFlow提供了所有開源的深度學習框架里,最全的算法庫,并且在不斷的添加新的算法庫。這些算法庫基本上已經滿足了大部分的需求,對于普通的應用,基本上不用自己再去自定義實現基本的算法庫了。

5.完善的文檔

??TensorFlow的官方網站,提供了非常詳細的文檔介紹,內容包括各種API的使用介紹和各種基礎應用的使用例子,也包括一部分深度學習的基礎理論。

??自從宣布開源以來,大量人員對TensorFlow做出貢獻,其中包括Google員工,外部研究人員和獨立程序員,全球各地的工程師對TensorFlow的完善,已經讓TensorFlow社區變成了Github上最活躍的深度學習框架。

1.4 TensorFlow的系統架構是怎樣的?

??整個系統從底層到上層可分為七層:

???????設備層:硬件計算資源,支持CPU、GPU

??網絡層:支持兩種通信協議

??數值計算層:提供最基礎的計算,有線性計算、卷積計算

??高維計算層:數據的計算都是以數組的形式參與計算

??計算圖層:用來設計神經網絡的結構

??工作流層:提供輕量級的框架調用

??構造層:最后構造的深度學習網絡可以通過TensorBoard服務端可視化

1.5 TensorFlow編程模型是怎樣的?

TensorFlow的編程模型:讓向量數據在計算圖里流動。那么在編程時至少有這幾個過程:1.構建圖,2.啟動圖,3.給圖輸入數據并獲取結果。

1.構建圖

TensorFlow的圖的類型是tf.Graph,它包含著計算節點和tensor的集合。

??這里引用了兩個新概念:tensor和計算節點。 ??我們先介紹tensor,一開始我們就介紹了,我們需要把數據輸入給啟動的圖才能獲取計算結果。那么問題來了,在構建圖時用什么表示中間計算結果?這個時候tensor的概念就需要引入了。 ??類型是tf.Tensor,代表某個計算節點的輸出,一定要看清楚是“代表”。它主要有兩個作用:

1.構建不同計算節點之間的數據流

2.在啟動圖時,可以設置某些tensor的值,然后獲取指定tensor的值。這樣就完成了計算的輸入輸出功能。

如下代碼所示:

inImage = tf.placeholder(tf.float32,[32,32,3],"inputImage") processedImage = tf.image.per_image_standardization(inImage,"processedImage")

??這里inImage和processedImage都是tensor類型。它們代表著計算節點輸出的數據,數據的值具體是多少在啟動圖的時候才知道。上面兩個方法調用都傳遞了一個字符串,它是計算節點的名字,最好給節點命名,這樣我們可以在圖上調用get_tensor_by_name(name)獲取對應的tensor對象,十分方便。(tensor名字為“<計算節點名字>:<tensor索引>”)

??創建tensor時,需要指定類型和shape。對不同tensor進行計算時要求類型相同,可以使用 tf.cast 進行類型轉換。同時也要求 shape (向量維度)滿足運算的條件,我們可以使用 tf.reshape 改變shape。

??現在了解計算節點的概念,其功能是對tensor進行計算、創建tensor或進行其他操作,類型是tf.Operation。獲取節點對象的方法為get_operation_by_name(name)。

構建圖,如下代碼:

g=tf.Graph()with g.as_default():input_data=tf.placeholder(tf.float32,[None,2],"input_data")input_label=tf.placeholder(tf.float32,[None,2],"input_label")W1=tf.Variable(tf.truncated_normal([2,2]),name="W1")B1=tf.Variable(tf.zeros([2]),name="B1")output=tf.add(tf.matmul(input_data,W1),B1,name="output")cross_entropy=tf.nn.softmax_cross_entropy_with_logits(logits=output,labels=input_label)train_step=tf.train.AdamOptimizer().minimize(cross_entropy,name="train_step")initer=tf.global_variables_initializer()

??上面的代碼中我們創建了一個圖,并在上面添加了很多節點。我們可以通過調用get_default_graph()獲取默認的圖。

??Input_data,input_label,W1,B1,output,cross_entropy都是tensor類型,train_step,initer,是節點類型。

有幾類tensor或節點比較重要,下面介紹一下:

1.placeholder

??Tensorflow,顧名思義, tensor代表張量數據,flow代表流,其最初的設計理念就是構建一張靜態的數據流圖。圖是有各個計算節點連接而成,計算節點之間流動的便是中間的張量數據。要想讓張量數據在我們構建的靜態計算圖中流動起來,就必須有最初的輸入數據流。而placeholder,翻譯過來叫做占位符,顧名思義,是給我們的輸入數據提供一個接口,也就是說我們的一切輸入數據,例如訓練樣本數據,超參數數據等都可以通過占位符接口輸送到數據流圖之中。使用實例如下代碼:

import tensorflow as tf x = tf.placeholder(dtype=tf.float32,shape=[],name='x') y = tf.placeholder(dtpe=tf.float32,shape=[],nmae='y') z = x*y with tf.Session() as sess:prod = sess.run(z,feed_dict={x:1.,y:5.2})print(prod) [out]:5.2

2.?variable

??無論是傳統的機器學習算法,例如線性支持向量機(Support Vector Machine, SVM),其數學模型為y = <w,x> + b,還是更先進的深度學習算法,例如卷積神經網絡(Convolutional Neural Network, CNN)單個神經元輸出的模型y = w*x + b。可以看到,w和b就是我們要求的模型,模型的求解是通過優化算法(對于SVM,使用 SMO[1]算法,對于CNN,一般基于梯度下降法)來一步一步更新w和b的值直到滿足停止條件。因此,大多數機器學習的模型中的w和b實際上是以變量的形式出現在代碼中的,這就要求我們在代碼中定義模型變量。

import tensorflow as tf a = tf.Variable(2.) b = tf.Variable(3.) with tf.Session() as sess:sess.run(tf.global_variables_initializer()) #變量初始化print(sess.run(a*b)) [out]:6.

[1] Platt, John. "Sequential minimal optimization: A fast algorithm for training support vector machines." (1998).

3.?initializer

??由于tensorflow構建的是靜態的計算流圖,在開啟會話之前,所有的操作都不會被執行。因此為了執行在計算圖中所構建的賦值初始化計算節點,需要在開啟會話之后,在會話環境下運行初始化。如果計算圖中定義了變量,而會話環境下為執行初始化命令,則程序報錯,代碼如下:

import tensorflow as tf a = tf.Variable(2.) b = tf.Variable(3.) with tf.Session() as sess:#sess.run(tf.global_variables_initializer()) #注釋掉初始化命令print(sess.run(a*b)) [Error]: Attempting to use uninitialized value Variable

2.啟動圖

??先了解session的概念,然后才能更好的理解圖的啟動。 ??圖的每個運行實例都必須在一個session里,session為圖的運行提供環境。Session的類型是tf.Session,在實例化session對象時我們需要給它傳遞一個圖對象,如果不顯示給出將使用默認的圖。Session有一個graph屬性,我們可以通過它獲取session對應的圖。

代碼如下:

numOfBatch=5 datas=np.zeros([numOfBatch,2],np.float32) labels=np.zeros([numOfBatch,2],np.float32)sess=tf.Session(graph=g) graph=sess.graph sess.run([graph.get_operation_by_name("initer")])dataHolder=graph.get_tensor_by_name("input_data:0") labelHolder=graph.get_tensor_by_name("input_label:0") train=graph.get_operation_by_name("train_step") out=graph.get_tensor_by_name("output:0")for i inrange(200):result=sess.run([out,train],feed_dict={dataHolder:datas,labelHolder:labels})if i%100==0:saver.save(sess,"./moules")sess.close()

代碼都比較簡單,就不介紹了。不過要注意2點:1.別忘記運行初始化節點,2.別忘記close掉session對象以釋放資源。

3.給圖輸入數據并獲取結果

代碼:

for i inrange(200):result=sess.run([out,train],feed_dict={dataHolder:datas,labelHolder:labels})

??這里主要用到了session對象的run方法,它用來運行某個節點或tensor并獲取對應的值。我們一般會一次傳遞一小部分數據進行mini-batch梯度下降來優化模型。

??我們需要把我們需要運行的節點或tensor放入一個列表,然后作為第一個參數(不考慮self)傳遞給run方法,run方法會返回一個計算結果的列表,與我們傳遞的參數一一對應。

??如果我們運行的節點依賴某個placeholder,那我們必須給這個placeholder指定值,怎么指定代碼里面很清楚,給關鍵字參數feed_dict傳遞一個字典即可,字典里的元素的key是placeholder對象,value是我們指定的值。值的數據的類型必須和placeholder一致,包括shape。值本身的類型是numpy數組。

這里再解釋一個細節,在定義placeholder時代碼如下:

input_data=tf.placeholder(tf.float32,[None,2],"input_data") input_label=tf.placeholder(tf.float32,[None,2],"input_label")

??shape為[None,2],說明數據第一個維度是不確定的,然后TensorFlow會根據我們傳遞的數據動態推斷第一個維度,這樣我們就可以在運行時改變batch的大小。比如一個數據是2維,一次傳遞10個數據對應的tensor的shape就是[10,2]。可不可以把多個維度指定為None?理論上不可以!

1.6 如何基于tensorflow搭建VGG16

? 介紹完關于tensorflow的基礎知識,是時候來一波網絡搭建實戰了。雖然網上有很多相關教程,但我想從最標準的tensorflow代碼和語法出發(而不是調用更高級的API,失去了原來的味道),向大家展示如何搭建其標準的VGG16網絡架構。話不多說,上代碼:

import numpy as np import tensorflow as tfdef get_weight_variable(shape):return tf.get_variable('weight', shape=shape, initializer=tf.truncated_normal_initializer(stddev=0.1))def get_bias_variable(shape):return tf.get_variable('bias', shape=shape, initializer=tf.constant_initializer(0))def conv2d(x, w, padding = 'SAME', s=1):x = tf.nn.conv2d(x, w, strides=[1, s, s, 1], padding = padding)return xdef maxPoolLayer(x):return tf.nn.max_pool(x, ksize = [1, 2, 2, 1],strides = [1, 2, 2, 1], padding = 'SAME')def conv2d_layer(x,in_chs, out_chs, ksize, layer_name):with tf.variable_scope(layer_name):w = get_weight_variable([ksize, ksize, in_chs, out_chs])b = get_bias_variable([out_chs])y = tf.nn.relu(tf.bias_add(conv2d(x,w,padding = 'SAME', s=1), b))return ydef fc_layer(x,in_kernels, out_kernels, layer_name):with tf.variable_scope(layer_name):w = get_weight_variable([in_kernels,out_kernels])b = get_bias_variable([out_kernels])y = tf.nn.relu(tf.bias_add(tf.matmul(x,w),b))return ydef VGG16(x):conv1_1 = conv2d_layer(x,tf.get_shape(x).as_list()[-1], 64, 3, 'conv1_1')conv1_2 = conv2d_layer(conv1_1,64, 64, 3, 'conv1_2')pool_1 = maxPoolLayer(conv1_2)conv2_1 = conv2d_layer(pool1,64, 128, 3, 'conv2_1')conv2_2 = conv2d_layer(conv2_1,128, 128, 3, 'conv2_2')pool2 = maxPoolLayer(conv2_2)conv3_1 = conv2d_layer(pool2,128, 256, 3, 'conv3_1')conv3_2 = conv2d_layer(conv3_1,256, 256, 3, 'conv3_2')conv3_3 = conv2d_layer(conv3_2,256, 256, 3, 'conv3_3')pool3 = maxPoolLayer(conv3_3)conv4_1 = conv2d_layer(pool3,256, 512, 3, 'conv4_1')conv4_2 = conv2d_layer(conv4_1,512, 512, 3, 'conv4_2')conv4_3 = conv2d_layer(conv4_2,512, 512, 3, 'conv4_3')pool4 = maxPoolLayer(conv4_3)conv5_1 = conv2d_layer(pool4,512, 512, 3, 'conv5_1')conv5_2 = conv2d_layer(conv5_1,512, 512, 3, 'conv5_2')conv5_3 = conv2d_layer(conv5_1,512, 512, 3, 'conv5_3')pool5 = maxPoolLayer(conv5_3)pool5_flatten_dims = int(np.prod(pool5.get_shape().as_list()[1:]))pool5_flatten = tf.reshape(pool5,[-1,pool5_flatten_dims])fc_6 = fc_layer(pool5_flatten, pool5_flatten_dims, 4096, 'fc6')fc_7 = fc_layer(fc_6, 4096, 4096, 'fc7')fc_8 = fc_layer(fc_7, 4096, 10, 'fc8')return fc_8

2 Pytorch

2.1 Pytorch是什么?

??Pytorch是torch的python版本,是由Facebook開源的神經網絡框架,專門針對 GPU 加速的深度神經網絡(DNN)編程。Torch 是一個經典的對多維矩陣數據進行操作的張量(tensor )庫,在機器學習和其他數學密集型應用有廣泛應用。與Tensorflow的靜態計算圖不同,pytorch的計算圖是動態的,可以根據計算需要實時改變計算圖。但由于Torch語言采用 Lua,導致在國內一直很小眾,并逐漸被支持 Python 的 Tensorflow 搶走用戶。作為經典機器學習庫 Torch 的端口,PyTorch 為 Python 語言使用者提供了舒適的寫代碼選擇。

2.2 為什么選擇 Pytorch?

1.簡潔:

??PyTorch的設計追求最少的封裝,盡量避免重復造輪子。不像 TensorFlow 中充斥著session、graph、operation、name_scope、variable、tensor、layer等全新的概念,PyTorch 的設計遵循tensor→variable(autograd)→nn.Module 三個由低到高的抽象層次,分別代表高維數組(張量)、自動求導(變量)和神經網絡(層/模塊),而且這三個抽象之間聯系緊密,可以同時進行修改和操作。 簡潔的設計帶來的另外一個好處就是代碼易于理解。PyTorch的源碼只有TensorFlow的十分之一左右,更少的抽象、更直觀的設計使得PyTorch的源碼十分易于閱讀。

2.速度:

??PyTorch 的靈活性不以速度為代價,在許多評測中,PyTorch 的速度表現勝過 TensorFlow和Keras 等框架。框架的運行速度和程序員的編碼水平有極大關系,但同樣的算法,使用PyTorch實現的那個更有可能快過用其他框架實現的。

3.易用:

??PyTorch 是所有的框架中面向對象設計的最優雅的一個。PyTorch的面向對象的接口設計來源于Torch,而Torch的接口設計以靈活易用而著稱,Keras作者最初就是受Torch的啟發才開發了Keras。PyTorch繼承了Torch的衣缽,尤其是API的設計和模塊的接口都與Torch高度一致。PyTorch的設計最符合人們的思維,它讓用戶盡可能地專注于實現自己的想法,即所思即所得,不需要考慮太多關于框架本身的束縛。

4.活躍的社區:

??PyTorch 提供了完整的文檔,循序漸進的指南,作者親自維護的論壇 供用戶交流和求教問題。Facebook 人工智能研究院對 PyTorch 提供了強力支持,作為當今排名前三的深度學習研究機構,FAIR的支持足以確保PyTorch獲得持續的開發更新,不至于像許多由個人開發的框架那樣曇花一現。

2.3 PyTorch 的架構是怎樣的?

??PyTorch(Caffe2) 通過混合前端,分布式訓練以及工具和庫生態系統實現快速,靈活的實驗和高效生產。PyTorch 和 TensorFlow 具有不同計算圖實現形式,TensorFlow 采用靜態圖機制(預定義后再使用),PyTorch采用動態圖機制(運行時動態定義)。PyTorch 具有以下高級特征:

??混合前端:新的混合前端在急切模式下提供易用性和靈活性,同時無縫轉換到圖形模式,以便在C ++運行時環境中實現速度,優化和功能。 ??分布式訓練:通過利用本地支持集合操作的異步執行和可從Python和C ++訪問的對等通信,優化了性能。 ??Python優先: PyTorch為了深入集成到Python中而構建的,因此它可以與流行的庫和Cython和Numba等軟件包一起使用。 ??豐富的工具和庫:活躍的研究人員和開發人員社區建立了豐富的工具和庫生態系統,用于擴展PyTorch并支持從計算機視覺到強化學習等領域的開發。 ??本機ONNX支持:以標準ONNX(開放式神經網絡交換)格式導出模型,以便直接訪問與ONNX兼容的平臺,運行時,可視化工具等。 ??C++前端:C++前端是PyTorch的純C++接口,它遵循已建立的Python前端的設計和體系結構。它旨在實現高性能,低延遲和裸機C++應用程序的研究。 使用GPU和CPU優化的深度學習張量庫。

2.4 Pytorch 與 tensorflow 之間的差異在哪里?

??上面也將了PyTorch 最大優勢是建立的神經網絡是動態的, 對比靜態的 Tensorflow, 它能更有效地處理一些問題, 比如說 RNN 變化時間長度的輸出。各有各的優勢和劣勢。兩者都是大公司發布的, Tensorflow(Google)宣稱在分布式訓練上下了很大的功夫, 那就默認 Tensorflow 在分布式訓練上要超出 Pytorch(Facebook),還有tensorboard可視化工具, 但是 Tensorflow 的靜態計算圖使得在 RNN 上有一點點被動 (雖然它用其他途徑解決了), 不過用 PyTorch 的時候, 會對這種動態的 RNN 有更好的理解。而且 Tensorflow 的高度工業化, 它的底層代碼很難看懂, Pytorch 好那么一點點, 如果深入 PytorchAPI, 至少能比看 Tensorflow 多看懂一點點 Pytorch 的底層在干啥。

2.5 Pytorch有哪些常用工具包?

??torch :類似 NumPy 的張量庫,強 GPU 支持 ; ??torch.autograd :基于 tape 的自動區別庫,支持 torch 之中的所有可區分張量運行; ??torch.nn :為最大化靈活性未涉及、與 autograd 深度整合的神經網絡庫; ??torch.optim:與 torch.nn 一起使用的優化包,包含 SGD、RMSProp、LBFGS、Adam 等標準優化方式; ??torch.multiprocessing: python 多進程并發,進程之間 torch Tensors 的內存共享; ??torch.utils:數據載入器。具有訓練器和其他便利功能; ??torch.legacy(.nn/.optim) :處于向后兼容性考慮,從 Torch 移植來的 legacy 代碼;

3 Caffe

3.1 什么是 Caffe?

??Caffe的全稱應該是Convolutional Architecture for Fast Feature Embedding,它是一個清晰、高效的深度學習框架,它是開源的,核心語言是C++,它支持命令行、Python和Matlab接口,它既可以在CPU上運行也可以在GPU上運行。它的license是BSD 2-Clause。

3.2 Caffe的特點是什么?

(1)、模塊化:Caffe從一開始就設計得盡可能模塊化,允許對新數據格式、網絡層和損失函數進行擴展。

(2)、表示和實現分離:Caffe的模型(model)定義是用Protocol Buffer語言寫進配置文件的。以任意有向無環圖的形式,Caffe支持網絡架構。Caffe會根據網絡的需要來正確占用內存。通過一個函數調用,實現CPU和GPU之間的切換。

(3)、測試覆蓋:在Caffe中,每一個單一的模塊都對應一個測試。

(4)、python和Matlab接口:同時提供Python和Matlab接口。

(5)、預訓練參考模型:針對視覺項目,Caffe提供了一些參考模型,這些模型僅應用在學術和非商業領域,它們的license不是BSD。

3.3 Caffe的設計思想是怎樣的?

??基本上,Caffe 沿用了神經網絡的一個簡單假設----所有的計算都是以layer的形式表示的,layer做的事情就是take一些數據,然后輸出一些計算以后的結果,比如說卷積,就是輸入一個圖像,然后和這一層的參數(filter)做卷積,然后輸出卷積的結果。每一個layer需要做兩個計算:forward是從輸入計算輸出,然后backward是從上面給的gradient來計算相對于輸入的gradient,只要這兩個函數實現了以后,我們就可以把很多層連接成一個網絡,這個網絡做的事情就是輸入我們的數據(圖像或者語音或者whatever),然后來計算我們需要的輸出(比如說識別的label),在training的時候,我們可以根據已有的label來計算loss和gradient,然后用gradient來update網絡的參數,這個就是Caffe的一個基本流程。

??基本上,最簡單地用Caffe上手的方法就是先把數據寫成Caffe的格式,然后設計一個網絡,然后用Caffe提供的solver來做優化看效果如何,如果你的數據是圖像的話,可以從現有的網絡,比如說alexnet或者googlenet開始,然后做fine tuning,如果你的數據稍有不同,比如說是直接的float vector,你可能需要做一些custom的configuration,Caffe的logistic regression example興許會很有幫助。

??Fine tune方法:fine tuning的想法就是說,在imagenet那么大的數據集上train好一個很牛的網絡了,那別的task上肯定也不錯,所以我們可以把pretrain的網絡拿過來,然后只重新train最后幾層,重新train的意思是說,比如我以前需要classify imagenet的一千類,現在我只想識別是狗還是貓,或者是不是車牌,于是我就可以把最后一層softmax從一個40961000的分類器變成一個40962的分類器,這個strategy在應用中非常好使,所以我們經常會先在imagenet上pretrain一個網絡,因為我們知道imagenet上training的大概過程會怎么樣。

3.4 Caffe架構是怎樣的?

??Caffe的架構與其它的深度學習框架稍微不同,它沒有根據算法實現過程的方式來進行編碼,而是以系統級的抽象作為整體架構,逐層的封裝實現細節,使得上層的架構變得很清晰。Caffe的整體架構如下:

1. SyncedMem

??這個類的主要功能是封裝CPU和GPU的數據交互操作。一般來說,數據的流動形式都是:硬盤->CPU內存->GPU內存->CPU內存->(硬盤),所以在寫代碼的過程中經常會寫CPU/GPU之間數據傳輸的代碼,同時還要維護CPU和GPU兩個處理端的內存指針。這些事情處理起來不會很難,但是會很繁瑣。因此SyncedMem的出現就是把CPU/GPU的數據傳輸操作封裝起來,只需要調用簡單的接口就可以獲得兩個處理端同步后的數據。

2. Blob

??Blob是用于存儲數據的對象,在Caffe中各種數據(圖像輸入、模型參數)都是以Blob的形式在網絡中傳輸的,Blob提供統一的存儲操作接口,可用來保存訓練數據、模型參數等,同時Blob還能在CPU和GPU之間進行同步以支持CPU/GPU的混合運算。 ??這個類做了兩個封裝:一個是操作數據的封裝,使用Blob可以操縱高維的數據,快速訪問其中的數據,變換數據的維度等;另一個是對原始數據和更新量的封裝,每一個Blob中都有data和diff兩個數據指針,data用于存儲原始數據,diff 用于存儲反向傳播(Backpropagation)的梯度更新值。Blob使用了SyncedMem,這樣便于訪問不同的處理端。Blob基本實現了整個Caffe數據結構部分的封裝,在Net類中可以看到所有的前后向數據和參數都用Blob來表示就足夠了。數據的抽象到這個就可以了,接下來作層級的抽象。神經網絡的前后向計算可以做到層與層之間完全獨立,只要每個層按照一定的接口規則實現,就可以確保整個網絡的正確性。

3. Layer

??Layer是網絡Net的基本單元,也是Caffe中能在外部進行調整的最小網絡結構單元,每個Layer都有輸入Blob和輸出Blob。Layer(層)是Caffe中最龐大最繁雜的模塊,它是神經網絡的基本計算單元。由于Caffe強調模塊化設計,因此只允許每個layer完成一類特定的計算,例如convolution操作、pooling、非線性變換、內積運算,以及數據加載、歸一化和損失計算等。Caffe中layer的種類有很多,具體的種類及功能請看官方文檔。在創建一個Caffe模型的時候,也是以Layer為基礎進行的。Layer是一個父類,它的下面還有各種實現特定功能的子類,例如data_layer,conv_layer,loss_layer等。Layer是通過LayFactory來創建的。

4. Net

??Net是一個完整的深度網絡,包含輸入層、隱藏層、輸出層,在Caffe中一般是一個卷積神經網絡(Convolution Neural Networ,CNN)。通過定義不同類型的Layer,并用Blob將不同的Layer連接起來,就能產生一個Net。Net將數據Blob和層Layer組合起來做進一步的封裝,對外提供了初始化和前后傳播的接口,使得整體看上去和一個層的功能類似,但內部的組合可以是多種多樣的。值得一提的是,每一層的輸入輸出數據統一保存在Net中,同時每個層內的參數指針也保存在Net中,不同的層可以通過WeightShare共享相同的參數,因此可以通過配置來實現多個神經網絡層之間共享參數的功能。一個Net由多個Layer組成。一個典型的網絡從data layer(從磁盤中載入數據)出發到loss layer結束。

5. Solver

??有了Net就可以進行神經網絡的前后向傳播計算了,但是還缺少神經網絡的訓練和預測功能,Solver類進一步封裝了訓練和預測相關的一些功能。它還提供了兩個接口:一個是更新參數的接口,繼承Solver可以實現不同的參數更新方法,如Momentum,Nesterov,Adagrad等,因此可以使用不同的優化算法。另一個接口是訓練過程中每一輪特定狀態下的可注入的一些回調函數,在代碼中這個回調點的直接使用者就是多GPU訓練算法。Solver定義了針對Net網絡模型的求解方法,記錄網絡的訓練過程,保存網絡模型參數,中斷并恢復網絡的訓練過程。自定義Solver能夠實現不同的神經網絡求解方式。閱讀Solver的代碼可以了解網絡的求解優化過程。Solver是一個父類,它下面還有實現不同優化方法的子類,例如sgd_solver,adagrad_sovler等,Solver是通過SolverFactory來創建的。

6. Proto

??caffe.proto位于…/src/caffe/proto目錄下,在這個文件夾下還有一個.pb.cc和一個.pb.h文件,這兩個文件都是由caffe.proto編譯而來的。 在caffe.proto中定義了很多結構化數據,包括: BlobProto、Datum、FillerParameter、NetParameter、SolverParameter、SolverState、LayerParameter、ConcatParameter、ConvolutionParameter、DataParameter、DropoutParameter、HDF5DataParameter、HDF5OutputParameter、ImageDataParameter、InfogainLossParameter、InnerProductParameter、LRNParameter、MemoryDataParameter、PoolingParameter、PowerParameter、WindowDataParameter、V0LayerParameter。

7. IO

??除了上面的東西之外,還需要輸入數據和參數。DataReader和DataTransformer幫助準備輸入數據,Filler對參數進行初始化,一些Snapshot方法可以對模型進行持久化。

3.5 Caffe的有哪些接口?

??Caffe深度學習框架支持多種編程接口,包括命令行、Python和Matlab,下面將介紹如何使用這些接口。

1. Caffe Python接口

??Caffe提供 Python 接口,即Pycaffe,具體實現在caffe、python文件夾內。在Python代碼中import caffe,可以load models(導入模型)、forward and backward (前向、反向迭代)、handle IO(數據輸入輸出)、visualize networks(繪制net)和instrument model solving(自定義優化方法)。所有的模型數據、計算參數都是暴露在外、可供讀寫的。 ??(1)caffe.Net 是主要接口,負責導入數據、校驗數據、計算模型。 ??(2)caffe.Classsifier 用于圖像分類。 ??(3)caffe.Detector 用于圖像檢測。 ??(4)caffe.SGDSolver 是露在外的 solver 的接口。 ??(5)caffe.io 處理輸入輸出,數據預處理。 ??(6)caffe.draw 可視化 net 的結構。 ??(7)caffe blobs 以 numpy ndarrys 的形式表示,方便而且高效。

2. Caffe MATLAB接口

??MATLAB接口(Matcaffe)在 caffe/matlab 目錄的 caffe 軟件包。在 matcaffe 的基礎上,可將Caffe整合到MATLAB代碼中。 ??MATLAB接口包括: ??(1)MATLAB 中創建多個網絡結構。 ??(2)網絡的前向傳播(Forward)與反向傳播(Backward)計算。 ??(3)網絡中的任意一層以及參數的存取。 ??(4)網絡參數保存至文件或從文件夾加載。 ??(5)blob 和 network 形狀調整。 ??(6)網絡參數編輯和調整。 ??(7)創建多個 solvers 進行訓練。 ??(8)從solver 快照(Snapshots)恢復并繼續訓練。 ??(9)訪問訓練網絡(Train nets)和測試網絡(Test nets)。 ??(10)迭代后網絡交由 MATLAB 控制。 ??(11)MATLAB代碼融合梯度算法。

3. Caffe 命令行接口

??命令行接口 Cmdcaffe 是 Caffe 中用來訓練模型、計算得分以及方法判斷的工具。Cmdcaffe 存放在 caffe/build/tools 目錄下。

1. caffe train

??caffe train 命令用于模型學習,具體包括: ??(1)caffe train 帶 solver.prototxt 參數完成配置。 ??(2)caffe train 帶 snapshot mode_iter_1000.solverstate 參數加載 solver snapshot。 ??(3)caffe train 帶 weights 參數 model.caffemodel 完成 Fine-tuning 模型初始化。

2. caffe test

??caffe test 命令用于測試運行模型的得分,并且用百分比表示網絡輸出的最終結果,比如 accuracyhuoloss 作為其結果。測試過程中,顯示每個 batch 的得分,最后輸出全部 batch 的平均得分值。

3. caffe time

??caffe time 命令用來檢測系統性能和測量模型相對執行時間,此命令通過逐層計時與同步,執行模型檢測。

參考文獻: 1.深度學習:Caffe之經典模型講解與實戰/ 樂毅,王斌

4 網絡搭建有什么原則?

4.1新手原則。

剛入門的新手不建議直接上來就開始搭建網絡模型。比較建議的學習順序如下:

  • 1.了解神經網絡工作原理,熟悉基本概念及術語。
  • 2.閱讀經典網絡模型論文+實現源碼(深度學習框架視自己情況而定)。
  • 3.找數據集動手跑一個網絡,可以嘗試更改已有的網絡模型結構。
  • 4.根據自己的項目需要設計網絡。

4.2深度優先原則。

通常增加網絡深度可以提高準確率,但同時會犧牲一些速度和內存。但深度不是盲目堆起來的,一定要在淺層網絡有一定效果的基礎上,增加深度。深度增加是為了增加模型的準確率,如果淺層都學不到東西,深了也沒效果。

4.3卷積核size一般為奇數。

卷積核為奇數有以下好處:

  • 1 保證錨點剛好在中間,方便以 central pixel為標準進行滑動卷積,避免了位置信息發生偏移 。
  • 2 保證在填充(Padding)時,在圖像之間添加額外的零層,圖像的兩邊仍然對稱。

4.4卷積核不是越大越好。

AlexNet中用到了一些非常大的卷積核,比如11×11、5×5卷積核,之前人們的觀念是,卷積核越大,感受野越大,看到的圖片信息越多,因此獲得的特征越好。但是大的卷積核會導致計算量的暴增,不利于模型深度的增加,計算性能也會降低。于是在VGG、Inception網絡中,利用2個3×3卷積核的組合比1個5×5卷積核的效果更佳,同時參數量(3×3×2+1=19<26=5×5×1+1)被降低,因此后來3×3卷積核被廣泛應用在各種模型中。

5 有哪些經典的網絡模型值得我們去學習的?

提起經典的網絡模型就不得不提起計算機視覺領域的經典比賽:ILSVRC .其全稱是 ImageNet Large Scale Visual Recognition Challenge.正是因為ILSVRC 2012挑戰賽上的AlexNet橫空出世,使得全球范圍內掀起了一波深度學習熱潮。這一年也被稱作“深度學習元年”。而在歷年ILSVRC比賽中每次刷新比賽記錄的那些神經網絡也成為了人們心中的經典,成為學術界與工業屆競相學習與復現的對象,并在此基礎上展開新的研究。

序號年份網絡名稱獲得榮譽
12012AlexNetILSVRC圖像分類冠軍
22014VGGNetILSVRC圖像分類亞軍
32014GoogLeNetILSVRC圖像分類冠軍
42015ResNetILSVRC圖像分類冠軍
52017SeNetILSVRC圖像分類冠軍
  • 1 AlexNet 論文:ImageNet Classification with Deep Convolutional Neural Networks?代碼實現:tensorflow?主要特點:
  • 1.第一次使用非線性激活函數ReLU。
  • 2.增加防加過擬合方法:Droupout層,提升了模型魯棒性。
  • 3.首次使用數據增強。
  • 4.首次使用GPU加速運算。
  • 2 VGGNet 論文:Very Deep Convolutional Networks for Large-Scale Image Recognition?代碼實現:tensorflow?主要特點:
  • 1.網絡結構更深。
  • 2.普遍使用小卷積核。
  • 3 GoogLeNet 論文:Going Deeper with Convolutions?代碼實現:tensorflow?主要特點:
  • 1.增強卷積模塊功能。 主要的創新在于他的Inception,這是一種網中網(Network In Network)的結構,即原來的結點也是一個網絡。Inception一直在不斷發展,目前已經V2、V3、V4。其中1*1卷積主要用來降維,用了Inception之后整個網絡結構的寬度和深度都可擴大,能夠帶來2-3倍的性能提升。
  • 2.連續小卷積代替大卷積,保證感受野不變的同時,減少了參數數目。
  • 4 ResNet 論文:Deep Residual Learning for Image Recognition?代碼實現:tensorflow?主要特點:

解決了“退化”問題,即當模型的層次加深時,錯誤率卻提高了。

  • 5 SeNet 論文:Squeeze-and-Excitation Networks?代碼實現:tensorflow?主要特點:

提出了feature recalibration,通過引入 attention 重新加權,可以得到抑制無效特征,提升有效特征的權重,并很容易地和現有網絡結合,提升現有網絡性能,而計算量不會增加太多。

CV領域網絡結構演進歷程:?

ILSVRC挑戰賽歷年冠軍:?

此后,ILSVRC挑戰賽的名次一直是衡量一個研究機構或企業技術水平的重要標尺。 ILSVRC 2017 已是最后一屆舉辦.2018年起,將由WebVision競賽(Challenge on Visual Understanding by Learning from Web Data)來接棒。因此,即使ILSVRC挑戰賽停辦了,但其對深度學習的深遠影響和巨大貢獻,將永載史冊。

6 網絡訓練有哪些技巧嗎?

6.1.合適的數據集。

  • 1 沒有明顯臟數據(可以極大避免Loss輸出為NaN)。
  • 2 樣本數據分布均勻。

6.2.合適的預處理方法。

關于數據預處理,在Batch Normalization未出現之前預處理的主要做法是減去均值,然后除去方差。在Batch Normalization出現之后,減均值除方差的做法已經沒有必要了。對應的預處理方法主要是數據篩查、數據增強等。

6.3.網絡的初始化。

網絡初始化最粗暴的做法是參數賦值為全0,這是絕對不可取的。因為如果所有的參數都是0,那么所有神經元的輸出都將是相同的,那在back propagation的時候同一層內所有神經元的行為也是相同的,這可能會直接導致模型失效,無法收斂。吳恩達視頻中介紹的方法是將網絡權重初始化均值為0、方差為1符合的正態分布的隨機數據。

6.4.小規模數據試練。

在正式開始訓練之前,可以先用小規模數據進行試練。原因如下:

  • 1 可以驗證自己的訓練流程對否。
  • 2 可以觀察收斂速度,幫助調整學習速率。
  • 3 查看GPU顯存占用情況,最大化batch_size(前提是進行了batch normalization,只要顯卡不爆,盡量挑大的)。

6.5.設置合理Learning Rate。

  • 1 太大。Loss爆炸、輸出NaN等。
  • 2 太小。收斂速度過慢,訓練時長大大延長。
  • 3 可變的學習速率。比如當輸出準確率到達某個閾值后,可以讓Learning Rate減半繼續訓練。

6.6.損失函數

損失函數主要分為兩大類:分類損失和回歸損失

1.回歸損失:

  • 1 均方誤差(MSE 二次損失 L2損失) 它是我們的目標變量與預測值變量差值平方。
  • 2 平均絕對誤差(MAE L1損失) 它是我們的目標變量與預測值變量差值絕對值。 關于MSE與MAE的比較。MSE更容易解決問題,但是MAE對于異常值更加魯棒。更多關于MAE和MSE的性能,可以參考L1vs.L2 Loss Function

2.分類損失:

  • 1 交叉熵損失函數。 是目前神經網絡中最常用的分類目標損失函數。
  • 2 合頁損失函數 合頁損失函數廣泛在支持向量機中使用,有時也會在損失函數中使用。缺點:合頁損失函數是對錯誤越大的樣本施以更嚴重的懲罰,但是這樣會導致損失函數對噪聲敏感。

總結

以上是生活随笔為你收集整理的【DL】网络搭建及训练的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产精品永久免费 | 在线视频18在线视频4k | 午夜久久久精品 | 综合国产在线 | 亚洲精品高清在线 | 天天操天天舔天天爽 | 久久一区二区免费视频 | 色综合久久精品 | 欧美视频xxx| 国产福利中文字幕 | 久久久免费看视频 | 久久久久久久99精品免费观看 | 成人免费大片黄在线播放 | 国精产品999国精产品岳 | 去干成人网 | 久久国产精品免费视频 | 日韩精品免费一区二区在线观看 | 一区二区三区免费在线观看视频 | 国产91av视频在线观看 | 久久呀 | 九九热免费观看 | 欧美日韩国产mv | 日韩中文字幕电影 | 欧美国产在线看 | 91精品久久久久 | 高清av中文字幕 | 又大又硬又黄又爽视频在线观看 | 国产永久免费观看 | 1区2区3区在线观看 三级动图 | 亚洲综合在线五月 | 亚洲综合在线视频 | 色97在线 | 97成人精品视频在线观看 | 日韩在线不卡视频 | 日韩视频免费播放 | 97精品国产97久久久久久春色 | 99久久爱 | 毛片一级免费一级 | 国产精品美女久久久久久久久 | 国产日产精品一区二区三区四区的观看方式 | 欧美婷婷色 | 亚洲精品日韩av | 少妇18xxxx性xxxx片 | 夜夜躁狠狠躁日日躁视频黑人 | 国产在线久草 | 国产精品久久久久一区二区三区 | 999精品网 | av成人在线网站 | 天天摸天天干天天操天天射 | 在线观看久草 | 亚洲第一中文网 | 久久一区二区三区四区 | 99在线免费视频 | 精品久久在线 | 亚洲精品国产精品乱码不99热 | 国产精品久久久久久久婷婷 | 四虎影院在线观看av | 国产系列在线观看 | 欧美日韩国产三级 | 青青河边草免费直播 | 中文字幕婷婷 | 国产成人精品一区二区三区免费 | 久久国产精品一区二区三区 | 丁香花在线视频观看免费 | 99麻豆久久久国产精品免费 | 日本精品一区二区三区在线观看 | 日本黄色特级片 | 久久久久久中文字幕 | 国产一级久久 | 日批视频在线观看免费 | 超碰在线观看97 | 91成人短视频在线观看 | 一区二区三区免费 | 麻豆影视在线播放 | 国产精品久久久久久久久久免费看 | 亚洲粉嫩av | 久久观看免费视频 | 精品一区二区三区电影 | 国产一区二区三区免费观看视频 | 久久一二三四 | 夜夜夜夜夜夜操 | 日韩中文字幕第一页 | 欧美在线视频一区二区三区 | 久久综合五月天婷婷伊人 | 欧美日韩在线视频一区二区 | 亚洲视频综合 | 国产成人精品一区在线 | 欧美日韩a视频 | 欧美日韩91 | 国产精品久久久久久久久免费 | 成人a在线观看高清电影 | 97av精品 | 黄网站大全 | 国产视频在线看 | 精品久久久影院 | 久久久久高清 | 久久免费激情视频 | 国产69久久久欧美一级 | 99爱国产精品 | 亚洲成av人片在线观看香蕉 | 麻豆视频一区 | av黄免费看 | 国产亚洲一区二区在线观看 | 在线观看91久久久久久 | 国产一区自拍视频 | 亚洲一级性 | 国产男女爽爽爽免费视频 | 国产精品v欧美精品v日韩 | 91精品久久久久久综合乱菊 | 免费a一级| 久久精品男人的天堂 | 伊人精品影院 | 精品99免费 | 在线免费av网 | 日av免费 | 久久综合九色综合久久久精品综合 | 狠狠久久综合 | 国产亚洲视频在线 | 午夜久久久精品 | 91免费在线播放 | 色视频国产直接看 | 国产美女在线精品免费观看 | av成人动漫在线观看 | 日韩精品一区二区三区不卡 | 色吊丝在线永久观看最新版本 | 国产精品18久久久 | 免费在线黄色av | 免费观看完整版无人区 | 蜜臀久久99精品久久久酒店新书 | 69xx视频| 2019天天干夜夜操 | 日韩高清在线一区二区 | 97香蕉超级碰碰久久免费软件 | 亚洲精品高清视频 | 中文字幕在线播放第一页 | 久久免费视频这里只有精品 | 国产精品免费看久久久8精臀av | 国产精品入口久久 | 天天插日日插 | 国产在线中文字幕 | 免费色视频 | 麻豆视频在线免费 | 国产三级国产精品国产专区50 | 亚洲一区二区三区在线看 | 91麻豆精品国产91久久久久久久久 | 国产女人40精品一区毛片视频 | 久久爱资源网 | 日日干天夜夜 | 日韩在线电影一区二区 | 在线久草视频 | 福利一区在线 | 色资源二区在线视频 | 91av社区| 91插插影库| 99精品热视频 | 久久免费看视频 | 国产一级二级三级视频 | 手机成人av | 中文字幕一区二区三区四区在线视频 | 亚洲a在线观看 | 草久热 | 麻花天美星空视频 | 少妇高潮流白浆在线观看 | adn—256中文在线观看 | 成年人视频在线免费播放 | 九九热re| 欧美男男激情videos | av 一区二区三区四区 | 免费av片在线| 国产福利免费在线观看 | 日韩在线视频一区二区三区 | 不卡的一区二区三区 | 亚洲激情av | 精品国产午夜 | 免费看片成年人 | 懂色av一区二区三区蜜臀 | 国产 日韩 欧美 中文 在线播放 | 久久久久久久久久影院 | 国产黄色特级片 | 国产三级精品三级在线观看 | 日本韩国精品一区二区在线观看 | 人人草在线观看 | 欧美aa在线观看 | 99久久99热这里只有精品 | 人人玩人人添人人 | 美女视频免费精品 | 国产精品福利在线播放 | 久久精品欧美一区 | 亚洲精品tv久久久久久久久久 | 成人小视频在线观看免费 | 成人性生交大片免费看中文网站 | 91av网址 | www.夜夜爽 | 日韩成人免费在线 | 一级α片| 欧美在线视频一区二区三区 | 九色在线视频 | 97在线视频免费播放 | 成人在线视频观看 | 国产1区2 | 嫩草91影院 | www178ccom视频在线 | 日韩高清激情 | 97av视频在线 | 免费福利视频网站 | 亚洲精品成人av在线 | 国产四虎影院 | 日本在线h | 日韩精品欧美视频 | 69久久99精品久久久久婷婷 | 亚洲精品短视频 | 欧美日韩另类在线观看 | 欧美性一级观看 | 欧美久久久久久久 | 日本一区二区免费在线观看 | 免费的黄色av | 福利电影一区二区 | 国产亚洲aⅴaaaaaa毛片 | 97超碰在线免费 | 国产区欧美 | 天堂av在线网址 | 亚洲狠狠 | 国产精品入口麻豆 | 蜜臀久久99精品久久久久久网站 | 久草在线免费看视频 | 亚洲成人家庭影院 | 久久国产一二区 | 97在线观看视频国产 | 美女视频黄频大全免费 | 日韩精品一区电影 | av一区在线播放 | 97视频人人免费看 | 日韩av视屏 | 在线播放国产一区二区三区 | 日韩中文字幕国产 | 超碰日韩| 福利视频精品 | 亚洲欧美激情插 | 91av国产视频 | 日韩网站在线播放 | 在线观看视频一区二区 | 日韩精品免费 | 久久综合九色欧美综合狠狠 | 精品v亚洲v欧美v高清v | 国产高清在线免费观看 | 天天操夜夜操 | 在线观看a视频 | 亚洲国产成人在线播放 | 91免费观看国产 | 欧美乱熟臀69xxxxxx | 婷婷色综合色 | 在线观看爱爱视频 | 蜜臀av一区| 亚洲理论电影网 | 一级a性色生活片久久毛片波多野 | 91亚洲网| 少妇性xxx| 国产在线精品二区 | 国产欧美精品一区二区三区 | 久久高清国产 | 99色在线观看视频 | 久久久久在线视频 | 亚洲午夜久久久影院 | 久久久久久久久久伊人 | www.av小说 | 91免费观看视频网站 | 国产美女精品视频免费观看 | wwxxxx日本| 亚洲天堂网在线视频 | 色多多污污在线观看 | 国产资源站| 91精品国产亚洲 | 国产精品久久久久永久免费看 | 久久精品国产久精国产 | av在线免费观看不卡 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 久艹视频在线免费观看 | 美女国内精品自产拍在线播放 | 91精品国产高清自在线观看 | av在线成人 | 亚洲视频精选 | 97色国产 | 国产精品毛片久久 | 国产亚洲在线观看 | 欧美精品免费视频 | 亚色视频在线观看 | 国产精品久久久免费 | av成人免费在线看 | wwxxx日本| 亚洲激情在线观看 | 五月天久久久久 | 国产精品美女久久久久久久 | 国产精品久久久久久麻豆一区 | 成人免费视频网 | 亚洲精品视频在线观看免费视频 | 欧美小视频在线观看 | 午夜精选视频 | 久久伊人国产精品 | 99久久精品无码一区二区毛片 | 久久国产欧美日韩精品 | 午夜久久福利视频 | 欧美日韩一级久久久久久免费看 | 九九视频在线观看视频6 | 伊人干综合 | 国产精品观看在线亚洲人成网 | 91免费观看视频网站 | 国产在线观看午夜 | 久久图| 狠狠干网址 | 狠狠操天天射 | 狠狠色丁婷婷日日 | 欧美视频18| 国产69精品久久久久99尤 | 国产成人在线免费观看 | 麻豆91小视频 | 久久久久激情 | 国产精品免费观看视频 | 国精产品999国精产品岳 | 91精品视频免费看 | 亚洲作爱视频 | 午夜色场 | 精品久久久久久久久久国产 | 九九热精品视频在线观看 | 亚洲精品乱码久久久久久久久久 | 日韩亚洲在线 | 亚洲日本黄色 | 国产精品美女视频网站 | 992tv在线 | 日韩在线观看精品 | 免费在线观看日韩 | 激情网五月婷婷 | 一区二区伦理电影 | 超级碰碰碰视频 | 一区视频在线 | 久久九九国产视频 | 国内精品视频一区二区三区八戒 | 国内精品99 | 久久婷婷一区二区三区 | 国产精品免费久久 | 99热在线国产精品 | 欧洲av不卡 | 国产一级在线播放 | 亚洲精品影院在线观看 | 国产视频在线免费 | 四虎国产精品永久在线国在线 | 91在线麻豆| 国产精品免费久久久久久久久久中文 | 99久久久久免费精品国产 | 久久精品99精品国产香蕉 | 在线观看理论 | 中文字幕一区二区三区乱码在线 | 日韩av片无码一区二区不卡电影 | 日韩三级视频在线观看 | 丁香婷婷综合五月 | 国产在线中文字幕 | 国产一区黄色 | 免费一级特黄毛大片 | 在线看不卡av | 国产精品 国产精品 | 日日日视频| 久草精品视频 | 亚洲视频在线观看免费 | a级国产乱理伦片在线观看 亚洲3级 | 超碰人人干人人 | 国产一级片播放 | 精品在线观看一区二区三区 | 国产亚洲精品v | 欧美性高跟鞋xxxxhd | 黄网站a | 亚洲高清不卡av | 日韩成人免费在线 | 超碰人人99 | 美女在线观看av | 日日夜夜精品视频 | 日韩精品一区二区三区中文字幕 | 免费久久片| 一级黄色网址 | 国产精品videoxxxx | 欧美精品三级 | 日韩精品一区二区免费视频 | 狠狠的干| 91看片淫黄大片在线播放 | 久久精品国产一区二区三 | 五月天综合色激情 | 狠狠的干狠狠的操 | 日韩精品久久久久久中文字幕8 | 在线免费av网站 | 日本精品一区二区三区在线播放视频 | 免费看毛片在线 | 久久人操 | 福利网在线 | 免费黄色av. | 天天干天天操 | 久久综合九色综合97_ 久久久 | 久久精品黄色 | 狠狠躁18三区二区一区ai明星 | 欧美在线视频免费 | www.婷婷色| 欧美一区视频 | 午夜精品一区二区三区免费 | 日韩精品五月天 | 免费看片在线观看 | 天天操天天插 | 久久一区二区三区日韩 | 狠狠的干狠狠的操 | 在线视频观看亚洲 | 天天看天天操 | 五月天婷婷视频 | 日本精品午夜 | av免费福利| 中文字幕在线视频一区 | 91探花在线视频 | 91在线免费播放视频 | 欧美天天射 | 国产精品久久久久久久免费观看 | 色视频在线免费观看 | 国产精品一区二区麻豆 | 911国产精品 | 中文字幕在线观看亚洲 | 黄网站色视频免费观看 | 手机在线观看国产精品 | 69精品在线 | 色综合天天综合在线视频 | 国产精品久久久久久久免费 | 国产精品电影一区 | 久久综合免费视频影院 | 日韩欧美综合视频 | 国产精品99久久免费黑人 | 综合网在线视频 | 久久99这里只有精品 | 人人擦 | 免费日韩电影 | 国产真实精品久久二三区 | 国产成年免费视频 | 欧美日韩国产综合网 | 成人黄性视频 | 天天综合精品 | 久久精品国产99 | 人人爽人人爽人人爽学生一级 | 99日韩精品 | 亚洲视频1区2区 | 亚洲视频网站在线观看 | 五月婷婷狠狠 | 久久草草影视免费网 | 中文字幕在线视频一区二区 | 国产精品一区专区欧美日韩 | 亚洲国产成人av网 | 丰满少妇在线观看网站 | 丝袜美女在线观看 | 久久久免费高清视频 | 中文字幕在线观看网站 | 免费看色的网站 | 日韩69av | 午夜精品电影 | 西西444www| 欧美一级片免费观看 | 免费亚洲黄色 | 色搞搞| 天天操夜夜操国产精品 | 成人国产精品一区 | 99精品久久久久久久久久综合 | 国产精品中文久久久久久久 | 欧美亚洲国产精品久久高清浪潮 | 天天操伊人 | 日韩黄色中文字幕 | 国产成人亚洲在线电影 | 国产麻豆精品95视频 | 亚洲视频2| 久久综合久色欧美综合狠狠 | 日本黄色免费在线 | 国产在线日韩 | 超碰在线最新地址 | 国产精品久久久久久久久久久久久久 | 成人毛片在线观看视频 | 欧美少妇xxxxxx| 日韩视频在线不卡 | 青青河边草观看完整版高清 | 一级黄色毛片 | 91精品福利在线 | 欧美激情综合网 | 日韩精品一区二区三区外面 | 色妞色视频一区二区三区四区 | 激情综合亚洲 | 看全黄大色黄大片 | 91在线视频在线观看 | 国精产品999国精产品岳 | 91精品国产91久久久久久三级 | 日韩小视频 | 狠狠狠狠狠色综合 | 99热这里只有精品1 av中文字幕日韩 | 黄色在线视频网址 | 国产二区视频在线 | 五月婷婷丁香 | 免费视频99 | 青青河边草免费视频 | 91成人黄色 | 亚洲视频456 | 精品中文字幕在线播放 | 人人涩 | 国产清纯在线 | 久久天| 国产成人亚洲在线观看 | 成人一区二区在线 | 精品免费视频123区 午夜久久成人 | 国产在线中文 | 久久免费99精品久久久久久 | 中文字幕在线视频免费播放 | 久久精品人人做人人综合老师 | 91天天操 | 国产亚洲成人网 | 国产麻豆视频在线观看 | 青青草国产在线 | 视频福利在线观看 | 久久国产三级 | 日韩精品一区在线观看 | 久久久久久麻豆 | 亚洲国产片| 91网站免费观看 | 国产护士hd高朝护士1 | 中文字幕av最新更新 | 久久成人在线视频 | 91在线小视频 | 91精品国产综合久久福利不卡 | 国产小视频在线播放 | 日韩激情一二三区 | 91精品视频播放 | 国产资源免费在线观看 | 日日操操 | 午夜精品久久久久久久99热影院 | 久久久久国产一区二区 | 亚洲国产经典视频 | 在线视频久 | 精品一区二区三区电影 | 国产精久久久久久久 | 欧美极度另类性三渗透 | 少妇搡bbbb搡bbb搡69 | 成人网看片 | 成人午夜影院 | 欧美va在线观看 | 最新中文字幕在线观看视频 | 日本精品久久久一区二区三区 | 伊人天天狠天天添日日拍 | 精品一区 在线 | 国产一区久久久 | 久久天 | 国产精品视频永久免费播放 | 91久久国产露脸精品国产闺蜜 | 99久久这里只有精品 | 国产精品视频不卡 | av中文字幕在线观看网站 | 国产伦精品一区二区三区免费 | 成人在线免费观看视视频 | 日韩免费二区 | 国内精品免费 | 天天射网| 亚洲黄色一级大片 | 麻豆视频免费在线播放 | 国产你懂的在线 | 天天天天综合 | 伊人va| 久久久国产精品亚洲一区 | 在线观看中文av | 在线观看黄网站 | 99久久精品国产亚洲 | 欧美一区二视频在线免费观看 | 免费一级日韩欧美性大片 | 国产精品 国内视频 | 四虎4hu永久免费 | 超碰伊人网 | 亚洲精品视频播放 | 国产精品入口a级 | 麻豆系列在线观看 | 色噜噜日韩精品一区二区三区视频 | 免费网站色 | 人人射| 成人黄性视频 | 国产 欧美 日产久久 | 狠狠狠狠狠狠干 | 国产视频亚洲精品 | 婷婷成人亚洲综合国产xv88 | 久久网站免费 | 国产精品视频专区 | 国产精品网在线观看 | 亚洲国产精品女人久久久 | 欧美在一区| 国产久视频 | 美女av免费看 | 久久成人午夜视频 | 91免费网址 | 精品影院 | www.夜夜草 | 国产午夜精品久久久久久久久久 | 国产精品久久久久久久毛片 | 中文字幕色站 | 国产一区二区三区四区在线 | 国产精品久久久久久久久久久免费 | 一区二区三区四区免费视频 | 丝袜制服天堂 | 日韩网站一区 | 婷婷色中文 | 国产福利精品视频 | 狠狠色噜噜狠狠狠合久 | 国产成人高清在线 | 97在线免费| 国产首页 | 女人18精品一区二区三区 | 日本中文字幕在线视频 | 日日操夜夜操狠狠操 | 91亚色视频| 亚洲欧美综合精品久久成人 | 夜夜爱av| 九色视频自拍 | 国产区免费在线 | 人人要人人澡人人爽人人dvd | 日韩免费成人av | 国产精品伦一区二区三区视频 | 97色在线观看免费视频 | 高潮毛片无遮挡高清免费 | 欧美日韩另类在线 | 最新av网址在线观看 | 91香蕉视频污在线 | 免费av网站观看 | 91精品一区二区在线观看 | av国产在线观看 | 国产日韩视频在线观看 | 久久久高清视频 | 国产成人一区二区三区影院在线 | 日本久久成人中文字幕电影 | 欧美精品在线观看 | 国产无套精品久久久久久 | 久草在线在线视频 | 97成人在线视频 | 一本—道久久a久久精品蜜桃 | www.97视频| 国产精品9999久久久久仙踪林 | 四虎影视成人精品国库在线观看 | 国产在线观看xxx | 欧美爽爽爽| 一级黄色片在线观看 | 一级黄色片在线免费看 | 五月精品 | 福利二区视频 | 91人人爱 | 日韩在线视频国产 | 999亚洲国产996395 | 91精品一区在线观看 | 天天天干天天天操 | 亚洲国产精品一区二区尤物区 | 国产高清视频在线免费观看 | av.com在线| 操操爽 | 亚洲欧美日韩精品久久奇米一区 | 国产在线a免费观看 | 日韩精品在线看 | 黄色成人91| 欧美成人999 | 婷婷伊人综合亚洲综合网 | 国产综合精品一区二区三区 | 99视频在线精品国自产拍免费观看 | 91麻豆精品国产91久久久更新时间 | 亚洲国产精品久久久久久 | 久久综合欧美 | 成人国产精品入口 | 在线影院av | 中文字幕在线中文 | 午夜影院在线观看18 | 伊人官网 | 97成人资源站 | 中文字幕区 | 在线观看免费 | 国产高清av在线播放 | 黄a网| 国产成人久久av免费高清密臂 | 国产尤物在线视频 | 在线观看日本高清mv视频 | 最新av在线免费观看 | 国产偷v国产偷∨精品视频 在线草 | 国产精品久久久久久吹潮天美传媒 | 99精品免费在线 | 色之综合网 | 国产一区二区精品在线 | 日本一区二区高清不卡 | 国产精品乱码久久久久 | 久久综合久久综合久久综合 | 免费日韩一区二区 | 女人18毛片90分钟 | 伊人伊成久久人综合网小说 | 久久久久久久久久久久久影院 | 亚洲国产人午在线一二区 | 国产亚洲精品久久网站 | 国产v在线观看 | 国产高清99 | 日本成人黄色片 | av免费试看 | 国产精品片 | 国产色一区 | 99在线精品免费视频九九视 | 免费观看的黄色片 | 中文字幕不卡在线88 | 狠狠干天天操 | 九九在线视频免费观看 | 51久久夜色精品国产麻豆 | 97免费在线观看视频 | 成人网看片| 久久天天草| 亚洲 av网站 | 国产精选在线观看 | 国产中文字幕一区二区 | 精品久久五月天 | 在线观看国产一区 | 久久精品99国产国产 | 国产一区在线精品 | 99精品国产视频 | 色综合激情网 | 在线观看中文字幕第一页 | 毛片久久久 | 天天操婷婷 | 免费看黄色大全 | 天天五月天色 | 欧美日韩aaaa| 91视频网址入口 | 天天躁日日躁狠狠躁 | 麻豆传媒视频在线免费观看 | 久久免费视频在线观看6 | 天天干天天综合 | 欧美午夜精品久久久久 | 精品日韩在线一区 | 久久一区二区三区国产精品 | 69久久99精品久久久久婷婷 | 久草视频资源 | 96香蕉视频 | 毛片美女网站 | 欧美孕妇视频 | 亚洲成人av一区 | 午夜精品av | 色综合婷婷久久 | 五月婷婷视频在线 | 黄a在线观看 | 99国产精品久久久久老师 | 久久久久久久久久免费视频 | 国产精品va视频 | 国产在线观看你懂的 | av免费网 | 在线免费观看视频一区二区三区 | 99精品国产兔费观看久久99 | 99在线免费视频观看 | 亚洲午夜精品在线观看 | 欧美日韩99 | 美女网站色在线观看 | 婷婷在线网站 | 欧美一二区视频 | 国产成人一区二区三区影院在线 | 91丨九色丨国产女 | 最近最新中文字幕视频 | 色综合久久88 | 国产欧美精品一区二区三区 | 日日爽天天操 | 毛片网在线 | 天海翼一区二区三区免费 | 久久精品久久综合 | 亚洲成人av在线 | av成年人电影 | 久久呀| 综合网欧美 | 国产一级免费在线观看 | 久久99国产精品视频 | 最近中文字幕mv | 国产视频观看 | 狠狠色丁香久久婷婷综 | 欧美伦理电影一区二区 | 亚洲高清视频一区二区三区 | 国产99久久久国产 | 超碰在线人人草 | 国色天香av| 超碰在线最新网址 | 婷婷丁香激情五月 | 免费高清在线观看成人 | 日韩高清www | 99久久久久久国产精品 | 免费看十八岁美女 | 九七视频在线观看 | 日韩在线不卡 | 九九综合九九 | 精品久久五月天 | 国产女做a爱免费视频 | 日韩二区三区在线 | 亚洲国产影院 | 91成人网在线播放 | 亚洲精品网址在线观看 | 五月天婷婷综合 | 91一区啪爱嗯打偷拍欧美 | 色天天综合久久久久综合片 | 四虎影视精品成人 | 国产精品久久电影网 | 亚洲成人精品影院 | 日韩精品一区二区在线 | 韩国av免费 | 91九色综合 | 午夜电影一区 | 我爱av激情网 | 这里有精品在线视频 | 欧美日韩免费一区二区三区 | 天天做天天爱天天综合网 | 国产精品自产拍在线观看网站 | 99热精品免费观看 | 中文字幕日韩av | 伊人婷婷色 | 午夜在线免费观看视频 | 亚洲精品网站 | 欧美日韩在线播放 | 夜夜婷婷| 可以免费观看的av片 | 天天干天天做天天爱 | 日本在线中文在线 | 亚洲资源在线 | 伊人激情综合 | 天天射天天爱天天干 | 国产在线观看,日本 | 欧美国产精品久久久久久免费 | 国产日韩欧美在线影视 | 91福利视频网站 | 激情综合五月 | 国产一区二三区好的 | 天堂在线一区二区 | 久久免费国产电影 | 在线成人小视频 | 国产伦理精品一区二区 | 国产精品剧情在线亚洲 | 日韩高清久久 | 国产在线播放一区二区 | 中文字幕在线观看亚洲 | 久久免视频 | 亚洲第一中文网 | 欧美色综合天天久久综合精品 | 999久久久 | 麻豆网站免费观看 | 久久久91精品国产一区二区精品 | 免费高清在线一区 | 日本中文字幕视频 | 日本成人黄色片 | 国产999精品久久久久久麻豆 | 久久久久久久亚洲精品 | 久久久国产一区 | 日本视频高清 | 男女精品久久 | 国产成人精品一二三区 | 久久草在线视频国产 | 日韩免费电影网站 | 激情欧美xxxx | 亚洲日本va午夜在线影院 | 美女亚洲精品 | 高清av免费一区中文字幕 | 99久在线精品99re8热视频 | 黄色高清视频在线观看 | 午夜精品久久久99热福利 | 亚洲成人网在线 | 狠狠久久伊人 | 婷婷网站天天婷婷网站 | 日韩免费一级电影 | 国产福利在线免费观看 | 日韩欧美在线视频一区二区三区 | 99在线高清视频在线播放 | 正在播放国产91 | 天天玩天天干 | 伊人永久在线 | 久久精品一| 亚洲精品乱码久久久久久蜜桃不爽 | 婷婷久久综合网 | 黄色a三级 | 天天插天天狠天天透 | 在线观看中文 | 亚洲午夜精品久久久久久久久 | 成人精品99 | 97香蕉视频 | 久久精品中文 | 日本精品一二区 | 国产成人一区二区三区影院在线 | 久久国产亚洲精品 | 日韩av网站在线播放 | 91精品国自产在线观看 | 在线观看视频国产 | 激情视频一区二区 | 六月丁香激情综合 | 二区三区在线视频 | 精品一区久久 | 97超碰国产精品女人人人爽 | 人人爽人人爽人人爽学生一级 | 国产精品一区二区62 | 奇米网8888| 国产成人在线观看免费 | 男女免费视频观看 | 欧美日韩国产精品一区二区亚洲 | 日韩一区在线免费观看 | 国产精品21区 | 丁香婷婷色月天 | 久久免费试看 | 亚洲一区精品二人人爽久久 | 91亚洲狠狠婷婷综合久久久 | 国产精品久久久久三级 | avcom在线 | 一区二区三区四区在线 | 国产成人精品久久亚洲高清不卡 | 国产精品丝袜久久久久久久不卡 | 午夜视频久久久 | 国产精品毛片久久久久久久 | 又黄又爽又色无遮挡免费 | 天天色天天操综合网 | 国产一区二区精品久久91 | 麻豆国产精品va在线观看不卡 | 中文字幕第 | 欧美日韩观看 | 精品色综合 | 欧美成人在线网站 | 激情婷婷色 | 911亚洲精品第一 | 久久伊99综合婷婷久久伊 | 四虎影视成人永久免费观看亚洲欧美 | 久久免费精品一区二区三区 | 精品视频123区在线观看 | 在线观看www91 | 在线观看你懂的网站 | 国产午夜精品一区二区三区四区 | 91女神的呻吟细腰翘臀美女 | av天天干 | 欧美99精品 | 成人av网页 | 亚洲三级av| a级国产乱理伦片在线观看 亚洲3级 | 亚洲精品美女 | 999成人网 | 九色porny真实丨国产18 | 国产精品 亚洲精品 | 亚洲日本欧美 | 国产精品久久久久久久婷婷 | 久久视频免费在线 | 丁香婷婷色综合亚洲电影 | 久久综合影院 | 日本中文字幕在线 | av福利在线导航 | 国语精品免费视频 | 精品中文字幕视频 | 久久久午夜精品理论片中文字幕 | 久久精品视频国产 | 国产91精品一区二区 | 超碰人人超碰 | 中文字幕免费不卡视频 | 中文字幕你懂的 | 人人澡人摸人人添学生av | 日韩高清免费无专码区 | 91精品在线视频 | 久久久久久久久久久久久影院 | 久久久999| 久久视频网 | 91成人在线免费观看 | 成人免费大片黄在线播放 | 国产一区二区在线免费播放 | 麻豆mv在线观看 | 黄色亚洲精品 | 亚洲精品乱码久久久久久9色 | 久久久2o19精品 | 中文字幕亚洲精品在线观看 | 日韩www在线| 亚州黄色一级 | 91av在线免费播放 | 黄色毛片一级 | 97成人资源| 最近中文字幕完整视频高清1 | 欧美亚洲一区二区在线 | 成人免费色 | 91桃色在线免费观看 | 国产成人久久久久 | 中文字幕在线高清 | 又黄又爽又湿又无遮挡的在线视频 | 成片免费观看视频999 | 日韩精品偷拍 | 四虎免费在线观看视频 | 国产高清视频免费在线观看 | 97在线观| 欧美精品乱码久久久久久按摩 | 欧美亚洲一区二区在线 | 激情欧美一区二区三区 | 国产精品专区一 | 成年人免费观看国产 | 99爱这里只有精品 | av在线免费网站 | 黄色成人毛片 | 色网站视频 | 国模精品一区二区三区 | 99热精品在线观看 | 天天操天天色天天射 | 成人av在线一区二区 | 日韩久久午夜一级啪啪 | 综合天堂av久久久久久久 | 国产成人免费在线 | 欧美精品在线免费 | 久久精品综合视频 | 四川妇女搡bbbb搡bbbb搡 | 啪啪激情网 |