一、cifar 相關 (實際上這也是 度娘"tf.nn.lrn"時 搜索到的)html
1.一、學習筆記TF029_實現進階卷積網絡 - 簡書.html(https://www.jianshu.com/p/db534c67ea97)python
1.1.一、GitHub - tensorflow_models_ Models and examples built with TensorFlow.html(https://github.com/tensorflow/models)ZC:我已經 複製到 gitee中了git
https://gitee.com/zclxy/models_tensorflow/tree/master/tutorials/image/cifar10 中能看到 下載 "cifar-10"和"cifar-100"的dataset 的網址github
1.1.二、Classification datasets results.html(http://rodrigob.github.io/are_we_there_yet/build/classification_datasets_results.html)segmentfault
ZC:這裏有 "cifar-10"和"cifar-100"的dataset 的連接,實際上和上面是 一個地方api
二、tf.nn.lrn 相關數組
2.一、tensorflow下的局部響應歸一化函數tf.nn.lrn - 仙界天堂 - CSDN博客.html(https://blog.csdn.net/sinat_21585785/article/details/75087768)網絡
2.二、深度學習原理與框架-Tensorflow卷積神經網絡-cifar10圖片分類(代碼) 1.tf.nn.lrn(局部響應歸一化操做) 2.random.sample(在列表中隨機選值) 3.tf.one_hot(對標籤進行one_hot編碼) - python個人最愛 - 博客園.html(http://www.javashuo.com/article/p-utdssxtj-gc.html)框架
ZC:cifar10dom
2.三、學習筆記 TF014_卷積層、激活函數、池化層、歸一化層、高級層 - V2EX.html(https://www.v2ex.com/t/363602)
2.四、局部相應歸一化(Local Response Normalization) - 我的文章 - SegmentFault 思否.html(http://www.javashuo.com/article/p-nidjuoil-hv.html)
2.五、tensorflow中的lrn函數詳解 - banana1006034246的博客 - CSDN博客.html(https://blog.csdn.net/banana1006034246/article/details/75204013)
LRN函數相似DROPOUT和數據加強做爲relu激勵以後防止數據過擬合而提出的一種處理方法,全稱是 local response normalization--局部響應標準化。這個函數不多使用,基本上被相似DROPOUT這樣的方法取代,具體原理仍是值得一看的。
ZC:爲什麼 "少用"?什麼場景下使用這個?
三、
四、
五、極客學院 中的文章資料:
5.一、cifar-10 的文章
來自:卷積神經網絡 - TensorFlow 官方文檔中文版 - 極客學院Wiki.html(http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/deep_cnn.html)
代碼:能夠在 https://gitee.com/zclxy/models_tensorflow/tree/master/tutorials/image 中找到
我下載的 dataset,在 "G:\Tensorflow\Tensorflow_dataset\極客學院\卷積神經網絡" 中
ZC:文中提到的「Images頁的列表中查看全部可用的變換」,點擊連接進入查看,"Images頁"裏面全是 類"tf.image"的講解
ZC:文中提到的「image_summary
」,點擊連接進入查看,指的應該是 函數tf.image_summary(tag, tensor, max_images=None, collections=None, name=None)
六、
七、
八、 個人理解:
8.一、tensorflow下的局部響應歸一化函數tf.nn.lrn - 仙界天堂 - CSDN博客.html(https://blog.csdn.net/sinat_21585785/article/details/75087768)
8.1.一、
8.1.二、
這個公式中的a表示卷積層(包括卷積操做和池化操做)後的輸出結果,這個輸出結果的結構是一個四維數組[batch,height,width,channel],
這裏能夠簡單解釋一下,batch就是批次數(每一批爲一張圖片),height就是圖片高度,width就是圖片寬度,channel就是通道數能夠理解成一批圖片中的某一個圖片通過卷積操做後輸出的神經元個數(或是理解成處理後的圖片深度)。
ai(x,y)表示在這個輸出結構中的一個位置[a,b,c,d],能夠理解成在某一張圖中的某一個通道下的某個高度和某個寬度位置的點,即第a張圖的第d個通道下的高度爲b寬度爲c的點。
論文公式中的N表示通道數(channel)。
a,n/2,k,α,β分別表示函數中的input,depth_radius,bias,alpha,beta,其中n/2,k,α,β都是自定義的,特別注意一下∑疊加的方向是沿着通道方向的,即每一個點值的平方和是沿着a中的第3維channel方向的,也就是一個點同方向的前面n/2個通道(最小爲第0個通道)和後n/2個通道(最大爲第d-1個通道)的點的平方和(共n+1個點)。
而函數的英文註解中也說明了把input當成是d個3維的矩陣,說白了就是把input的通道數看成3維矩陣的個數,疊加的方向也是在通道方向。
畫個簡單的示意圖:
8.1.三、
8.1.四、ZC:說實話 "8.1.1"、"8.1.2"和"8.1.3"看了個莫名其妙... 而後結合 他給出的 實驗結果 和 本身的實驗拼湊結果,摸索出了 計算關係。只是知道了 怎麼計算 原理 仍是不太懂...
ZC:個人摸索
(1) 程序打印的信息:
[[[[ 1 2 3 4] --> [[[[0.07142857 0.06666667 0.10000001 0.13793103] [ 5 6 7 8]] --> [0.04545454 0.03448276 0.04022989 0.05369128]] [[ 9 10 11 12] --> [[0.02980132 0.02242153 0.02466368 0.03287672] [13 14 15 16]]] --> [0.0220339 0.01654846 0.0177305 0.02363368]]] [[[17 18 19 20] --> [[[0.0174538 0.01310044 0.01382824 0.01843318] [21 22 23 24]] --> [0.01444292 0.01083744 0.01133005 0.01510384]] [[25 26 27 28] --> [[0.01231527 0.00923952 0.00959488 0.01279123] [29 30 31 32]]]] --> [0.01073279 0.00805153 0.00831991 0.01109185]]]]
(2) 公式,代入 實際的測試代碼中的值後
上面公式中:i --> channel數據中的 byte數據的序號(從0開始)。
將 i 的值 代入公式:(舉例子,對 2 進行計算求值,2 在chanell數組中的 序號是 1)
因而:j的取值範圍就是 從0到3,因而計算的話:2對應的值 = 2 / (0 + 1* (1^2 + 2^2 + 3^2 + 4^2)) = 0.06666667
瞎蒙,摸索的計算過程:
# 26對應的輸出結果0.00923952計算以下 : 26/(0+1*(25^2+26^2+27^2+28^2))^1 # 24^2 = 576 25^2 = 625 26^2 = 676 27^2 = 729 28^2 = 784 --> 2814 26/2814 = 0.00923952 # 25/2814 = 0.00888415 # 27/2814 = 0.00959488 # 28/2814 = 0.00995025 # 576 + 625 + 676 + 729 = 2606 24/2606 = 0.00920952 # 144 + 625 + 676 + 729 = 2174 24/2174 = # 25 / (625 + 676 + 729) = 0.01231527 # 28 / 0.01279123 = 2188.9998 = 2189 # 676 + 729 + 784 = 2189 # ∑上下標是什麼意思_百度知道.html(https://zhidao.baidu.com/question/552425984.html) # 29^2 = 841 30^2 = 900 31^2 = 961 32^2 = 1024 # 841 + 900 + 961 = 2702 29 / 2702 = 0.01073279 # 841 + 900 + 961 + 1024 = 3726 30 / 3726 = 0.00805153 31 / 3726 = 0.00831991 # 900 + 961 + 1024 = 2885 32 / 2885 = 0.01109185 # 1^2 + 2^2 + 3^2 = 14 1 / 14 = 0.07142857 # 1^2 + 2^2 + 3^2 + 4^2 = 30 2 / 30 = 0.06666667 3 / 30 = 0.1 # 2^2 + 3^2 + 4^2 = 29 4 / 29 = 0.13793103
九、
十、
十一、
十二、
1三、
1四、
1五、