tensorflow中的lrn函数详解

article/2025/9/16 1:21:15

LRN函数类似DROPOUT和数据增强作为relu激励之后防止数据过拟合而提出的一种处理方法,全称是 local response normalization--局部响应标准化。这个函数很少使用,基本上被类似DROPOUT这样的方法取代,具体原理还是值得一看的

函数原型

def lrn(input, depth_radius=None, bias=None, alpha=None, beta=None,
        name=None):
官方文档给的解释如下,这些官方文档看了没啥卵用,越看越糊涂


sqr_sum[a, b, c, d] =
    sum(input[a, b, c, d - depth_radius : d + depth_radius + 1] ** 2)
output = input / (bias + alpha * sqr_sum) ** beta

见最早的出处AlexNet论文对它的定义, 《ImageNet Classification with Deep ConvolutionalNeural Networks》


i:代表下标,你要计算像素值的下标,从0计算起

j:平方累加索引,代表从j~i的像素值平方求和

x,y:像素的位置,公式中用不到

a:代表feature map里面的 i 对应像素的具体值

N:每个feature map里面最内层向量的列数

k:超参数,由原型中的blas指定

α:超参数,由原型中的alpha指定

n/2:超参数,由原型中的deepth_radius指定

β:超参数,由原型中的belta指定

import tensorflow as tf  a = tf.constant([  [[1.0, 2.0, 3.0, 4.0],  [5.0, 6.0, 7.0, 8.0],  [8.0, 7.0, 6.0, 5.0],  [4.0, 3.0, 2.0, 1.0]],  [[4.0, 3.0, 2.0, 1.0],  [8.0, 7.0, 6.0, 5.0],  [1.0, 2.0, 3.0, 4.0],  [5.0, 6.0, 7.0, 8.0]]  
])  
#reshape 1批次  2x2x8的feature map  
a = tf.reshape(a, [1, 2, 2, 8])  normal_a=tf.nn.lrn(a,2,0,1,1)  
with tf.Session() as sess:  print("feature map:")  image = sess.run(a)  print (image)  print("normalized feature map:")  normal = sess.run(normal_a)  print (normal) 
输出:
    feature map:  [[[[ 1.  2.  3.  4.  5.  6.  7.  8.]  [ 8.  7.  6.  5.  4.  3.  2.  1.]]  [[ 4.  3.  2.  1.  8.  7.  6.  5.]  [ 1.  2.  3.  4.  5.  6.  7.  8.]]]]  normalized feature map:  [[[[ 0.07142857  0.06666667  0.05454545  0.04444445  0.03703704  0.03157895  0.04022989  0.05369128]  [ 0.05369128  0.04022989  0.03157895  0.03703704  0.04444445  0.05454545  0.06666667  0.07142857]]  [[ 0.13793103  0.10000001  0.0212766   0.00787402  0.05194805  0.04  0.03448276  0.04545454]  [ 0.07142857  0.06666667  0.05454545  0.04444445  0.03703704  0.03157895  0.04022989  0.05369128]]]]  

分析如下:

由调用关系得出 n/2=2,k=0,α=1,β=1,N=8

第一行第一个数来说:i = 0

a = 1,min(N-1, i+n/2) = min(7, 2)=2,j = max(0, i - k)=max(0, 0)=0,下标从0~2个数平方求和, b=1/(1^2 + 2^2 + 3^2)=1/14 = 0.071428571

同理,第一行第四个数来说:i = 3

a = 4,min(N-1, i+n/2) = min(7, 5 )=5, j = max(0,1) = 1,下标从1~5进行平方求和,b = 4/(2^2 + 3^2 + 4^2 + 5^2 + 6^2) = 4/90=0.044444444

再来一个,第二行第一个数来说: i = 0

a = 8, min(N-1, i+n/2) = min(7, 2) = 2, j=max(0,0)=0, 下标从0~2的3个数平方求和,b = 8/(8^2 + 7^2 + 6^2)=8/149=0.053691275


其他的也是类似操作

原文:https://blog.csdn.net/banana1006034246/article/details/75204013




http://chatgpt.dhexx.cn/article/NtopLiZy.shtml

相关文章

CNN中的LRN层

LRN层是按下述公式计算的:(用处不大 可被dropout normalization替代) 转自:https://blog.csdn.net/searobbers_duck/article/details/51645941

ImageNet 中的 LRN

LRN(Local Response Normalization) LRN 神经网络初学者,没有什么理论基础,偶然看到个ImageNet,就准备从其入手,先弄懂每层的含义,其中这个LRN层真是让人百思不得其解,搜索了下&am…

LRN局部响应归一化

这个技术主要是深度学习训练时的一种提高准确度的技术方法。其中caffe、tensorflow等里面是很常见的方法,其跟激活函数是有区别的,LRN一般是在激活、池化后进行的一中处理方法。   AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很…

深度神经网络中的局部响应归一化LRN简介及实现

Alex、Hinton等人在2012年的NIPS论文《ImageNet Classification with Deep Convolutional Neural Networks》中将LRN应用于深度神经网络中(AlexNet)。论文见:http://www.cs.toronto.edu/~hinton/absps/imagenet.pdf ,截图如下: 公式解释&…

LRN

发展时间点 局部响应归一化这个方法流行于2012年的 AlexNet网络,它将这种方法付诸实践,验证了它的可行性。在caffe框架和tensorflow框架中,这都是经常和卷积、池化配合使用的方法。 作用时间点:LRN一般是在激活、池化后进行的一中…

LRN (Local Response Normalization,即局部响应归一化层)

LRN (Local Response Normalization,即局部响应归一化层) (一)先看看归一化吧 什么是归一化? 归一化化是归纳统一样本的统计分布性。就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范…

详解LRN(local response normalization--局部响应标准化)缓解过拟合

局部响应归一化层(Local Response Normalization) LRN全称为Local Response Normalization,即局部响应归一化层,LRN函数类似Dropout和数据增强作为relu激活函数之后防止数据过拟合而提出的一种处理方法。这个函数很少使用&#xf…

局部响应归一化LRN (Local Response Normalization)

一、LRN技术介绍: LRN(Local Response Normalization) 是一种提高深度学习准确度的技术方法。 LRN 一般是在激活、 池化函数后的一种方法。在 ALexNet 中, 提出了 LRN 层, 对局部神经元的活动创建竞争机制&#xff0c…

深度学习饱受争议的局部响应归一化(LRN)详解

前言:Local Response Normalization(LRN)技术主要是深度学习训练时的一种提高准确度的技术方法。其中caffe、tensorflow等里面是很常见的方法,其跟激活函数是有区别的,LRN一般是在激活、池化后进行的一种处理方法。LRN归一化技术首次在AlexNe…

压缩算法之算术编码浅析与实现

压缩算法之算术编码浅析与实现 简介实现思路实现代码参考资料 简介 算术编码,属于熵编码的范畴,常用于各种信息压缩场合,如图像、视频、音频压缩领域。 基本原理: 核心原则:出现频率高的信息,分配少的比特…

算术编码(1)

序列a2a1的区间为(0.2,0.22) 算术解码步骤:

用分组编码解决算术编码的精度要求问题

这篇博客要介绍的是算术编码、译码。主要用分组编码的思路解决了当消息比较长时,小数位数太多,计算工具精度达不到的问题。 文末给出了matlab代码。题目的要求是:已知26个英文字母和空格的统计概率,对文本文档中的消息&#xff08…

算术编码 matlab程序,算术编码算法的matlab实现

算术编码算法的matlab实现 实验 1 算术编码算法的 Matlab 实现实验学时:2实验类型:(演示、验证、综合、√设计、研究)实验要求:(√必修、选修)一、实验目的掌握算数编码原理。二、实验内容利用 Matlab 编写程序实现算数编码,包括…

十六、算术编码_2、算术编码举例实现

基本原理 在一次算术编码的执行前,为简便起见,首先假设输入的信源为0/1的二进制信源,0和1的概率比为7:3。即二者的概率为: p(0) = 0.7; p(1) = 0.3;假设输入的待编码信息为[0, 0, 1],在编码每一个符号时,都需要对概率区间进行分割,并通过与编码区间进行比较,判断是否…

信息论基础:算术编码

1 引言 霍夫曼码是一种无损编码,而且是最优的符号码。但是,它有两个缺点:(1)每个符号至少需要一个比特;(2)当符号的概率分布变化时,使用不方便。 用一个例子来看看霍夫…

多媒体数据处理实验1:算术编码

1. 算法描述 功能: 给定概率字典以及待编码字符串,求出该字符串算术编码的结果(最短二进制串),并能根据算数编码结果进行解码,得到原字符串。 2.算法流程: 算术编码流程: (1) 首先…

数字图像算术编码python_算术编码简介

上一篇讲了LZW编码,本篇讨论另一种不同的编码算法,算数编码。和哈夫曼编码一样,算数编码是熵编码的一种,是基于数据中字符出现的概率,给不同字符以不同的编码。本文也会对这两种编码方式的相似和不同点进行比较。 编码…

算术编码

文章首发于我的个人博客 前言 这篇博客主要总结大二下课程《信息论》实验的内容。主要包含固定模式的算数编码以及自适应模式的算术编码。我将首先介绍这两种算术编码的基本思想和实现思路,然后给出具体的python代码并对代码中的一些关键点进行解释说明。 固定模…

算术编码原理及其python实现

目录 1. 原理部分:2. 香农界理论分析:3. 代码实现:4.实验结果 1. 原理部分: 原理部分参考什么是算术编码 一个从信源序列到不可压缩二元序列的一个可逆映射,假设序列 { X 1 … X n } \{X_{1} \ldots X_{n}\} {X1​…X…

基本算术编码

1.基本思想 算术编码,就是用一个数编码一串字符串。它的思想是这样的:对一个需要编码的字符串,给出一个初始区间[0, 1),这个区间被分成n份,n是这串字符串中不同字符的个数,每一份占区间长度的比例与相应字符出现次数占整个字符串…