matlab_matlab反归一化

matlab_matlab反归一化最近在做神经网络,需要对训练数据进行归一化到[0.10.9]之间。虽然matlab有现成的归一化函数(mapminmax()premnmx),但归一化到特定的区间,上述函数并不方便使用。由此萌生了自己编写归一化函数的想法。(先说推导,matlab代码见后面)

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

最近在做神经网络,需要对训练数据进行归一化到[0.1 0.9]之间。虽然matlab有现成的归一化函数(mapminmax() premnmx),但归一化到特定的区间,上述函数并不方便使用。由此萌生了自己编写归一化函数的想法。
本质上,常用的归一化就是线性变换。本文中以转化到[0.1 0.9]为例
这里写图片描述

y与x之间的关系为 y=ax+b ,具体一下就是

y=0.90.1xmaxxminx+0.1xmax0.9xminxmaxxmin




x=xmaxxmin0.90.1y+0.9xmin0.1xmax0.90.1



对于单个值和向量来说,只要按照上面的公式转化就行,很简单。

但很多时候,我们需要归一化的是多维向量,比如训练数据的输入特征集

X=[X1,X2,...,XM]T
,其中

Xi
是行向量。最大值向量

max=[m1,m2,...]
,最小值向量为

min=[n1,n2,...]


以2维向量为例,我们进行推导,得到:


[Y1Y2]=[a100a2]X+[b100b2]ones(size(X))



写到这里,对于程序实现来说,并没什么卵用。接下来对两个系数矩阵进一步推导,这里的

a1,a2


b1,b2
对应每维向量的

a




b

[a100a2]=(0.90.1)[m1n100m2n2]1

[b100b2]=[0.1m10.9n1000.1m20.9n2][m1n100m2n2]1



对于matlab来说,上面的对角阵非常容易实现

一堆恶心的公式到此结束,接下来上干货儿。以matlab为例,

function [ y, xmax, xmin ] = Normalize( x, xmax , xmin )
%NORMALIZE 利用max-min方法将数据归一化到[0.1,0.9]
% input: x---每行对应一个特征,每列为一个样本,
% output: nx---归一化数据,max---特征最大值,min---特征最小值
% created by Nie Zhipeng 2016.06.24
nxmin = 0.1;
nxmax = 0.9;
if nargin < 2
    P = minmax(x);
    xmin = P(:,1);
    xmax = P(:,2);
end
K = (nxmax - nxmin) * inv(diag(xmax - xmin));
b = diag(nxmin * xmax - nxmax * xmin) / diag(xmax - xmin);
y = K * x + b * ones(size(x));
end
function [ x ] = RNormalize( y, xmax, xmin )
%RNORMALIZE 恢复max-min方法归一化的数据
%input: nx---归一化的数据, 每行对应一个特征,每列对应一个样本
% max---特征最大值
% min---特征最小值
%Created by Nie Zhipeng 2016.06.24
nxmin = 0.1;
nxmax = 0.9;
K = 1/(nxmax-nxmin) * diag(xmax - xmin);
b = 1/(nxmax-nxmin) * diag(nxmax * xmin - nxmin * xmax);
x = K * y + b * ones(size(y)); 
end
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183177.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 推荐几款s60软件

    推荐几款s60软件用了一段时间E72(应该是E52),大概已经习惯了s60系统s60既不会出什么问题,也不会太出众,这份稳定,就是我所需要的介绍一下笔者常用的软件吧系统工具类360手机卫士虽然来电通也是很好的软件,但如

    2022年7月3日
    31
  • Android开机动画总结

    Android开机动画总结开机动画制作开机动画两个要点启动开机动画开机动画运行过程代码位置运行简介开机动画遇到的问题制作开机动画两个要点压缩时选择“存储”模式资源文件命名序号,需要和最大序号位数相同,位数不够,前面补零。如00、01、02、。。。、10、11。系统开机动画支持功能配置debug.sf.nobootanimation为0若要关闭开机动画功能,在device目录下的mk文件中配置,确保系统开…

    2022年5月15日
    46
  • C# TextBox输入密码显示星号(*)

    C# TextBox输入密码显示星号(*)在textBox上右键属性在行为-passwordChar后输入*

    2022年7月24日
    37
  • 裴礼文数学分析中的典型问题与方法百度云_数学分析的典型问题

    裴礼文数学分析中的典型问题与方法百度云_数学分析的典型问题裴礼文《数学分析中的典型问题与方法》第2天31~60第1章一元函数极限3.求极限值的若干方法利用等价代换和初等变形求极限。 等价代换。 先求出可以求出来的值。 根号内最好转变为一个常数和一个分式的和。 等价无穷小代换。 注意只有在x出现的时候才可以用,如果是常数不能用等价无穷小代换,比如说1.3.1的第4问。efx-eb不能等价代换成efx-1-eb+1因为必是常数,所以不能够这样等价无穷小代换。应该以整体的思想,然后进行等价无穷小代换。 等价代换原理,源于分

    2022年8月11日
    9
  • 论文精读——CenterNet :Objects as Points[通俗易懂]

    论文精读——CenterNet :Objects as Points[通俗易懂]论文题目:ObjectsasPoints论文地址:https://arxiv.org/pdf/1904.07850.pdf发布时间:2019.4.16机构:UTAustin,UCBerkeley代码:https://github.com/xingyizhou/CenterNetAbstract目标检测识别往往在图像上将目标以轴对称的框形式框出。大…

    2022年7月26日
    3
  • 二阶有源滤波器设计

    二阶有源滤波器设计1引入为什么要用有源二阶滤波器?(1)从有源来说对于无源二阶低通滤波器:其幅頻方程为:我们从中可以看出其通带截止频率为有其品质因子为0.372。我们根据上图得到二阶无源低通滤波器的品质因子只有0.372,如果希望Q大于0.5,就需要在ω=ωo附近增大幅度响应。实现这个目的的一种方法就是增加一个可控的正反馈控制量,这种反馈仅仅在ω=ωo附近奏效,参见下…

    2022年5月4日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号