精华内容
下载资源
问答
  • 数据减去平均除以标准差是什么意思
    展开全文
  • 本文结合:深度学习历程之图片的预处理为什么要减去图片的平均值 【数据预处理】:图像去均值:image mean 和 pixel mean   1.什么是均值? 对于每帧图像来说,均值分为两种:image mean 和 pixel mean。 ...

    本文结合:深度学习历程之图片的预处理为什么要减去图片的平均值

    【数据预处理】:图像去均值:image mean 和 pixel mean

     

    1.什么是均值?

    对于每帧图像来说,均值分为两种:image mean 和 pixel mean。

    image mean: 
    简单的说,读入一张彩色图像,假设是(N*N*3),这时候,求出image mean的话,就也是N*N*3,相当于把所有训练集在同一个空间位置上的像素的对应通道求了均值,也就是caffe里生成的mean.binaryproto文件,

    pixel mean: 
    而pixel mean的话,其实是把训练集里面所有图片的所有R通道像素,求了均值,G,B通道类似,也就是不考虑空间位置了。所以求出来就是三个数值(R_mean,G_mean,B_mean),所以其实就是把image mean再求了一次均值。1
    --------------------- 
    作者:Jack_Kuo 
    来源:CSDN 
    原文:https://blog.csdn.net/weixin_37251044/article/details/81157344 
     

     

    2.问题的产生

    这几天用MXNet写人脸关键点检测代码,中间忘了将图片在送入网络之前,减去图片的均值,从有关函数的名称来看,这算是一种归一化操作。总之,缺少这个操作的结果,就是loss一直在抖,丝毫没有下降或上升的趋势。所以今天从这个问题入手,对这问题相关进行掌握。

     

    3.问题的研究

    看了一些深度学习框架的例程,处理原图为黑白比如mnist数据集,不需要进行图片均值减去处理,而三通道彩图,一般都需要。


      1、那为什么需要这种减去图片均值的预处理方式呢? 
      2、什么情况下需要采用这种预处理方式  

     


    从主成分分析着手

    可以学习一下主成分分析

    这里摘抄一部分主要内容:

     

    对图像数据应用PCA算法

    为使PCA算法能有效工作,通常我们希望所有的特征  都有相似的取值范围(并且均值接近于0)。如果你曾在其它应用中使用过PCA算法,你可能知道有必要单独对每个特征做预处理,即通过估算每个特征  的均值和方差,而后将其取值范围规整化为零均值和单位方差。但是,对于大部分图像类型,我们却不需要进行这样的预处理。假定我们将在自然图像上训练算法,此时特征  代表的是像素  的值。所谓“自然图像”,不严格的说,是指人或动物在他们一生中所见的那种图像。 
    注:通常我们选取含草木等内容的户外场景图片,然后从中随机截取小图像块(如16x16像素)来训练算法。在实践中我们发现,大多数特征学习算法对训练图片的确切类型并不敏感,所以大多数用普通照相机拍摄的图片,只要不是特别的模糊或带有非常奇怪的人工痕迹,都可以使用。 
    在自然图像上进行训练时,对每一个像素单独估计均值和方差意义不大,因为(理论上)图像任一部分的统计性质都应该和其它部分相同,图像的这种特性被称作平稳性(stationarity)。 
    具体而言,为使PCA算法正常工作,我们通常需要满足以下要求:(1)特征的均值大致为0;(2)不同特征的方差值彼此相似。对于自然图片,即使不进行方差归一化操作,条件(2)也自然满足,故而我们不再进行任何方差归一化操作(对音频数据,如声谱,或文本数据,如词袋向量,我们通常也不进行方差归一化)。实际上,PCA算法对输入数据具有缩放不变性,无论输入数据的值被如何放大(或缩小),返回的特征向量都不改变。更正式的说:如果将每个特征向量  都乘以某个正数(即所有特征量被放大或缩小相同的倍数),PCA的输出特征向量都将不会发生变化。 
    既然我们不做方差归一化,唯一还需进行的规整化操作就是均值规整化,其目的是保证所有特征的均值都在0附近。根据应用,在大多数情况下,我们并不关注所输入图像的整体明亮程度。比如在对象识别任务中,图像的整体明亮程度并不会影响图像中存在的是什么物体。更为正式地说,我们对图像块的平均亮度值不感兴趣,所以可以减去这个值来进行均值规整化。

     

    从反向传播梯度着手

    了解到基本在deep learning中只要你是使用gradient descent来训练模型的话都要在数据预处理步骤进行数据归一化。当然这也是有一定原因的。 
    根据公式 

     

    后续研究

    之后再这方面碰到问题的话,会继续深究,加以补充,各位有不同的理解,也可底下评论讨论一下,共同学习。
    --------------------- 
    作者:conleyCV 
    来源:CSDN 
    原文:https://blog.csdn.net/u011267996/article/details/80503907 
     

    展开全文
  • 如下数据为销售人员一季度销售业绩,求出每位销售人员每月与平均销售业绩的差 data=[[580,524,457,475,384,568,654,683,882,528], [1043,326,1056,543,797,1085,637,975,268,525], [880,963,908,528,366,671,327,...

    如下数据为销售人员一季度销售业绩,求出每位销售人员每月与平均销售业绩的差

    data=[[580,524,457,475,384,568,654,683,882,528],
           [1043,326,1056,543,797,1085,637,975,268,525],
          [880,963,908,528,366,671,327,316,213,653]]
    
    df = pd.DataFrame(columns=['禹迎南','崇清芬','于安宜','柳旷','革忻欢','区暮','焦元绿','汉夜云','暨怀梦','胡沛'],
                      index=['一月','二月','三月'],data=data)
    

    在这里插入图片描述
    代码如下:

    df.sub(df.mean(axis='index'),axis='columns')
    

    拆解步骤如下:
    1、求各月销售均值

    a=df.mean(axis='index')
    a.head()
    

    在这里插入图片描述
    2、按列相减对应的值

    df.sub(a,axis='columns')
    

    在这里插入图片描述
    此方法可以扩展到每个元素加、乘、除所在行/列的平均值/最大值……
    加 add
    乘 mul
    除 div

    展开全文
  • 滑动平均值:又名移动平均值,在简单平均值的基础上,通过顺序逐期增加新数据、减去旧数据求算移动平均值,借以消除偶然变动因素。 参考百度百科:滑动平均法 应用场景: 对平均值会变化,但变化速度较慢的信号求...

    我的另一篇博客:Verilog功能模块——取滑动平均值(使用寄存器组)

    两者用不同的方式实现相同的功能,

    • 使用FIFO占用较少寄存器资源,适用于取值N较大的场合。

    • 使用寄存器组不需要额外的IP,更简单,但消耗寄存器资源较多,适用于取值N较小(一般不大于1024)的场合。

    一. 模块功能与应用场景

    模块功能:对输入信号取滑动平均值。

    滑动平均值:又名移动平均值,在简单平均值的基础上,通过顺序逐期增加新数据、减去旧数据求算移动平均值,借以消除偶然变动因素。

    参考百度百科:滑动平均法

    应用场景:

    • 对平均值会变化,但变化速度较慢的信号求平均值
    • 数字滤波中去除信号的直流偏置

    二. 模块框图与使用说明

    getMovingAvg_useFIFO

    参数N表示求N个点的平均值,参数DIN_WIDTH控制输入信号位宽。

    注意:

    1. din与din_valid应对齐
    2. clk应就是din与din_valid产生的时钟,这是为了保证一个有效数据din_valid只持续一个时钟周期的高电平
    3. N应为2的n次方,如:128(27),256(28),512(29),1024(210)等
    4. 为使平均值计算正确,N至少应包含一个完整信号周期的点,一般要大于2~3个信号周期的点数
    5. 这里的ac_signal为din - moving_avg表示不带直流偏置的交流信号
    6. 此模块需要搭配一个首字直通的单时钟FIFO使用,此FIFO的时钟应与此模块时钟相同
    7. FIFO深度和位宽需要与模块参数N和DIN_WIDTH分别保持一致

    模块封装为IP后的框图:

    image-20210520001141454

    模块IP参数配置界面:

    image-20210520001242307

    三. 模块代码

    /*
     * @Author       : Xu Dakang
     * @Email        : XudaKang_up@qq.com
     * @Date         : 2021-04-14 16:14:46
     * @LastEditors  : Xu Dakang
     * @LastEditTime : 2021-05-19 22:34:24
     * @Filename     : getMovingAvg.sv
     * @Description  : 求N个有符号数的滑动平均值
    */
    
    /*
    ! 模块功能: 求N个有符号数的滑动平均值
    * 思路:
      1.求N个数的和,再除以N即为N个数的平均值
      2.当第N+1个数到来后, 总和去除第1个数再加上第N+1个数, 再求平均值即为1~N+1个数的平均值, 以此类推
    */
    
    
    
    module getMovingAvg
    #(
      parameter N = 1024,      // 求N个数的平均值,N应等于2的n次方,如512,1024,2048等
      parameter DIN_WIDTH = 24 // 输入数据的位宽
    )(
      output logic signed [DIN_WIDTH-1 : 0] moving_avg,
    
      output logic signed [DIN_WIDTH-1 : 0] ac_signal,
      output logic                          ac_signal_valid,
    
      input  logic signed [DIN_WIDTH-1 : 0] din,
      input  logic                          din_valid,
    
      input  logic signed [DIN_WIDTH-1 : 0] fwft_fifo_dout,
      output logic                          fwft_fifo_rd_en,
      input  logic                          fwft_fifo_empty,
    
      output logic signed [DIN_WIDTH-1 : 0] fwft_fifo_din,
      output logic                          fwft_fifo_wr_en,
      input  logic                          fwft_fifo_full,
    
      input  logic clk,
      input  logic rstn
    );
    
    
    
    //< 信号同步 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    logic signed [DIN_WIDTH-1 : 0] din_r1;
    logic signed [DIN_WIDTH-1 : 0] din_r2;
    always_ff @(posedge clk) begin
      din_r1 <= din;
      din_r2 <= din_r1;
    end
    
    
    logic din_valid_r1;
    logic din_valid_r2;
    always_ff @(posedge clk) begin
      din_valid_r1 <= din_valid;
      din_valid_r2 <= din_valid_r1;
    end
    //< 信号同步 ------------------------------------------------------------
    
    
    
    //> FWFT FIFO存储N个数 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    logic [$clog2(N) : 0] din_cnt;
    always_ff @(posedge clk) begin  // FIFO写入计数
      if (~rstn)
        din_cnt <= '0;
      else if (din_valid_r2 && din_cnt[$clog2(N)] != 1)
        din_cnt <= din_cnt + 1'b1;
      else
        din_cnt <= din_cnt;
    end
    
    
    // fwft FIFO输出
    always_comb begin
      fwft_fifo_din = din_r2;
      fwft_fifo_wr_en = din_valid_r2;
    
      fwft_fifo_rd_en = din_cnt[$clog2(N)] == 1 && din_valid_r2;
    end
    //> FWFT FIFO存储N个数 ------------------------------------------------------------
    
    
    
    //< 求和 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    logic signed [$clog2(N)+DIN_WIDTH-1 : 0] sum;
    always_ff @(posedge clk) begin
      if (~rstn)
        sum <= '0;
      else if (din_valid_r2)
        if (din_cnt[$clog2(N)] != 1)
          sum <= din_r2 + sum; // 先减再加,没有位宽溢出的风险
        else
          sum <= (din_r2 - fwft_fifo_dout) + sum;
      else
        sum <= sum;
    end
    //< 求和 ------------------------------------------------------------
    
    
    
    //> 输出平均值 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    always_ff @(posedge clk) begin
      if (~rstn)
        moving_avg <= '0;
      else
        moving_avg <= sum[$clog2(N)+DIN_WIDTH-1 : $clog2(N)]; // 取高数据位
    end
    //> 输出平均值 ------------------------------------------------------------
    
    
    
    //< 求AC信号 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    always_ff @(posedge clk) begin
      if (~rstn)
        ac_signal <= '0;
      else if (din_valid_r2)
        ac_signal <= din_r2 - moving_avg;
      else
        ac_signal <= ac_signal;
    end
    
    
    always_ff @(posedge clk) begin
      if (~rstn)
        ac_signal_valid <= '0;
      else
        ac_signal_valid <= din_valid_r2;
    end
    //< 求AC信号 ------------------------------------------------------------
    
    
    
    endmodule
    

    四. testbench

    /*
     * @Author       : Xu Dakang
     * @Email        : XudaKang_up@qq.com
     * @Date         : 2021-04-21 14:29:04
     * @LastEditors  : Xu Dakang
     * @LastEditTime : 2021-05-20 00:32:15
     * @Filename     : getMovingAvg_tb.sv
     * @Description  : testbench of getMovingAvg
    */
    
    
    
    module getMovingAvg_tb;
    
    timeunit 1ns;
    timeprecision 1ps;
    
    
    localparam DIN_WIDTH = 24;
    
    logic [DIN_WIDTH-1 : 0] ac_signal;
    logic ac_signal_valid;
    
    logic [DIN_WIDTH-1 : 0] din;
    logic din_valid;
    
    logic [DIN_WIDTH-1 : 0] moving_avg;
    
    logic clk;
    logic rstn;
    
    getMovingAvg_system_wrapper  getMovingAvg_system_wrapper_inst (.*);
    
    
    
    // 生成时钟
    localparam CLKT = 2;
    initial begin
      clk = 0;
      forever #(CLKT / 2) clk = ~clk;
    end
    
    
    
    // 导入输入波形文件 Vivado只能识别绝对路径 注意修改!!!
    string din_path = "F:/OneDrive/VivadoPrj/getMovingAvg_useFIFO/getMovingAvg_useFIFO.srcs/sim_1/new/sin+0.5.txt"; // 可选 sin  sin+0.5  sin-0.5  sin+1.0  sin-1.0
    
    localparam DATA_NUM = 10240; // 数据量, 也就是txt文件的行数, 如果此参数大于数据行数, 读取到的内容为不定态
    logic [DIN_WIDTH-1 : 0] din_wave_data [DATA_NUM]; // 读取输入波形数据
    
    initial begin
      $readmemb(din_path, din_wave_data, 0, DATA_NUM-1); // vivado读取txt文件
    end
    
    
    int cnt;
    initial begin
      rstn = 0;
      din_valid = 0;
      #(CLKT * 10)  rstn = 1;
    
      for (int i = 0; i < DATA_NUM; i++) begin
        din = din_wave_data[i];
        cnt++;
        din_valid = 1;
        #(CLKT);
        // din_valid = 0;
        // #(CLKT * ({$random} % 12));
      end
      din_valid = 0;
    
      #(CLKT * 10) $stop;
    end
    
    
    
    endmodule
    

    五. 仿真验证

    仿真工具:Vivado 2020.2 Simulator。

    lock Design如下图,注意:

    1. 模块的参数N与FIFO深度保持一致
    2. 模块数据位宽与FIFO数据位宽保持一致
    3. FIFO必须是FWFT类型的

    image-20210520001427046

    1. 输入为(sinx + 0.5)信号:

      image-20210520235941795

    2. 输入为(sinx - 0.5)信号:

      image-20210521000309363

    3. 输入为(sinx + 1.0)信号:

      image-20210521000439599

    4. 输入为(sinx - 1.0)信号:

      image-20210521000552414

    六. 工程分享

    getMovingAvg_useFIFO 取滑动平均值模块(使用FIFO) vivado 2020.2工程.7z

    链接:https://pan.baidu.com/s/1YL0q2i2UfWdlCGSN7GOgnQ
    提取码:uxxn

    展开全文
  • 滑动平均值:又名移动平均值,在简单平均值的基础上,通过顺序逐期增加新数据、减去旧数据求算移动平均值,借以消除偶然变动因素。 参考百度百科:滑动平均法 应用场景: 对平均值会变化,但变化速度较慢的信号求...
  • 这几天用MXNet写人脸关键点检测代码,中间忘了将图片在送入网络之前,减去图片的均值,从有关函数的名称来看,这算是一种归一化操作。总之,缺少这个操作的结果,就是loss一直在抖,丝毫没有下降或上升的趋势。所以...
  • 平均值的概念很简单:所有数据之和除以数据点的个数,以此表示数据集的平均大小;其数学定义为 方差、标准差 方差这一概念的目的是为了表示数据集中数据点的离散程度;其数学定义为: 标准差与方差一样,表示的也...
  • 【java】求平均值

    万次阅读 2019-05-24 23:06:44
    思想:先在for循环里面求出最大和最小值,循环后面把数组里的每个内容进行相加得sum,最后返回值里面再减去最大和最小值除以数组的长度减2,注意:最后要进行强制类型转换,转化成double类型。 public class...
  • 移动小时平均值优化

    2019-10-24 11:51:58
    在最近的工作中 有个需求 需要 实时计算 某个数据的 移动小时平均值,就是在最近一小时内 该数据的平均值,按我们正常的思维就是用list或数组形式记录一小时内的所有值,然后求和计算平均值,我做了个小小的优化,...
  • R语言 平均值,中位数和模式

    千次阅读 2018-04-22 20:25:17
    R中的统计分析通过使用许多内置函数来执行。...通过求出数据集的和再除以求和数的总量得到平均值 函数mean()用于在R语言中计算平均值。 语法 用于计算R中的平均值的基本语法是 - mean(x, trim = 0, na.rm = ...
  • 通常我们求平均值习惯于利用(a+b)/2这种方式,但在我们的编程当中,如果数据过大,a+b在计算过程中可能会出现数据溢出的情况,从而导致结果出错,相反如果我们换一种思路,就可以避免这种情况,比如,我们可以利用大的数减去...
  • 去掉最低工资和最高工资后的工资平均值 题目 去掉最低工资和最高工资后的工资平均值(力扣:1491) 给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个...
  • 求两个数的平均值三种方法

    千次阅读 2019-01-14 16:29:19
    两个数相加然后除以2获得平均值。 int ave(int x, int y) { return (x + y) &amp;gt;&amp;gt; 1; } 因为c语言中整数有存储范围, 有符号整形的范围为 -2147483648~+2147483647 无符号整形的范围为...
  • 计算历年连续10天最大平均值;用于计算多年平均最大旬参考作物腾发量平均值和历年中出现该值的日序数平均值;连续10天最大降雨量亦可参考
  • #方式二 转换成torch.tensor,再减去均值除以方差 two_start=time.time() img=cv2.imread(img_path) img=img[:,:,::-1] print('img',img.shape,np.min(img),np.min(img)) tensor2=torch.from_numpy(img.copy())....
  • 主要思想就是先求和,找出最大最小值,减去最大最小值后求平均值 public class ArrayAverage{ public static void main(String[] args){ int[] a={2,9,4,5,7,1,3,8,6,10}; System.out.println(average(a)); ...
  • 平均值的概念很简单:所有数据之和除以数据点的个数,以此表示数据集的平均大小;其数学定义为 以下面10个点的CPU使用率数据为例,其平均值为17.2。 14 31 16 19 26 14 14 14 11 13 1 方差、标准差 方差...
  • 642. 数据流滑动窗口平均值

    千次阅读 2019-08-02 19:23:38
    给出一串整数流和窗口大小,计算滑动窗口中所有整数的平均值。 样例 样例1 : MovingAverage m = new MovingAverage(3); m.next(1) = 1 // 返回 1.00000 m.next(10) = (1 + 10) / 2 // 返回 5.50000 m.next(3) = (1 ...
  • 算术平均值也可称为平均值,它是通过将两个或多个数字/变量相加,然后将总和除以数字/变量的总数而获得的数量或变量; 中位数:中位数也是观察一组数据平均情况的一种方法。它是一组数字的中间数字。结果有两种可能...
  • CSV(Comma-Separated Value,逗号分隔)格式是一种常见的文件格式。NumPy中的loadtxt函数可以方便地读取CSV文件,自动切分字段,并将数据载入NumPy数组。   我们以某公司的历史股价数据为例展开叙述。股价数据...
  • 给出一串整数流和窗口大小,计算滑动窗口中所有整数的平均值。 样例 MovingAverage m = new MovingAverage(3); m.next(1) = 1 // 返回 1.00000 m.next(10) = (1 + 10) / 2 // 返回 5.50000 m...
  • python计算平均值、方差、中位数,注释齐全,基本为列表的学习和应用。 def getNum(): nums = [] iNumStr = input("请输入数字(回车退出):") while iNumStr != "": # 判断用户输入的数字是否为空,若为空则...
  • 对于多维数组来说最大为所求数组维数减去1,axis的数值表示第(数值+1)维度的索引数值变化相加,其他维度的对应相同,最终形成维度数比原来少1的数组,且缺少原来第(数值+1)维度的 例如对于326的数组,当axis=1...
  • 计算两个数的平均值的三种方法

    千次阅读 2019-09-05 11:49:00
    第一种方法 思路:两数相加然后除以2 参考代码: #include<stdio.h> int main() { int a = 10; int b = 20; int...
  • // 所有数减去平均值的平方和,再除以数组个数(或个数减一,即变异数)把所得值开根号 let stdDev = Math.sqrt(numbers.map(n=> (n-avg) * (n-avg)).reduce(sum) / len); return { max, min, avg: avg....
  • 在计算机处理中,一般协方差矩阵的计算是这样的:先让样本矩阵中心化,即每一维度减去该维度的均值(这样一来,每一维度上的均值为0),然后直接使用新得到的样本矩阵乘以它的转置,最后除以(N-1)。OpenCV正是采用了...
  • 就是用大的数值减去小的数值,得到其差值,然后将该差值进行平均,如此可以得到大数与小数之间的平均差值,将该数与小数相加,或者将大数减去该数,得到的就是其平均值。要是理解上有困难下面来看图理解: 看完图...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,404
精华内容 5,361
关键字:

减去平均值再除以平均值