一、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五、