抽屉效果.gif,误差从输出层反向的传到输入层

图片 1抽屉效果.gif

Excel 2016 For Mac 数据透视表基础应用三
——在透视表中定义公式
一、使用值显示样式完成计算
这是针对上一节的承接。涉及一些常用的使用样式。
1、更改数据项的值显示样式;
值区域,右击-字段设置

神经网络的训练过程分为两个过程:1、正向传播得到预测数据;2、反向传播更新权重。如下图所示:

一、文献总览

标题 作者(来源) 期刊(级别) 时间
基于互信息与词语共现的领域术语自动抽取方法研究 吴海燕(信阳农林学院计算机科学系,河南信阳) 重庆邮电大学学报(自然科学版) 2013年10月
基于互信息改进算法的新词发现对中文分词系统改进 杜丽萍等(西安邮电大学) 北京大学学报(自然科学 2016年1月
C-value 值和unithood 指标结合的中文科技术语抽取 韩红旗等(中国科学技术信息研究所) 图书情报工作(科技核心) 2012年10月
C值和互信息相结合的术语抽取 梁颖红等(苏州市职业大学) 计算机应用与软件(科技核心) 2010年4月
基于词频分布变化统计的术语抽取方法 周浪等(南京大学) 计算机科学(中文核心) 2009年5月

在很多的电商类的APP中我们经常会用到一种滑动悬停的效果,所以这次尝试着利用AutoLayout来实现这种效果。话不多说先上图

第一步:搭建界面

#define maxY 100#define ZZScreenW [UIScreen mainScreen].bounds.size.width#define ZZScreenH [UIScreen mainScreen].bounds.size.height// MainV定位到右侧的X值#define ZZTargetR 225// MainV定位到右侧的X值#define ZZTargetL -275#import "ViewController.h"@interface ViewController ()<UIGestureRecognizerDelegate>// 左边的view@property (nonatomic, weak) UIView *leftV;// 右边的view@property (nonatomic, weak) UIView *rightV;// 中间的view@property (nonatomic, weak) UIView *mainV;@end@implementation ViewController- viewDidLoad { [super viewDidLoad]; // 搭建界面 [self setUpView];}- setUpView{ // 添加左边的View UIView *leftV = [[UIView alloc] initWithFrame:self.view.bounds]; // 设置左边view的背景色为蓝色 leftV.backgroundColor = [UIColor blueColor]; [self.view addSubview:leftV]; // 添加右边的View UIView *rightV = [[UIView alloc] initWithFrame:self.view.bounds]; // 设置右边view的背景色为绿色 rightV.backgroundColor = [UIColor greenColor]; self.rightV = rightV; [self.view addSubview:rightV]; // 添加中间的View(中间一个最后添加,显示到最外面.) UIView *mainV = [[UIView alloc] initWithFrame:self.view.bounds]; // 设置中间view的背景色为红色 mainV.backgroundColor = [UIColor redColor]; self.mainV = mainV; [self.view addSubview:mainV];}@end

图片 2

图片 3image.png

二、文献思路及涉及方法

效果:

图片 4xt.gif图片 5Snip20150706_20.png

第二步.添加手势:

- viewDidLoad { [super viewDidLoad]; // 搭建界面 [self setUpView]; // 创建拖动手势 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector]; // 添加手势 [self.mainV addGestureRecognizer:pan];} // 实现手势方法:// 当手指拖动时调用.-pan:(UIPanGestureRecognizer *)pan{ // 获取手指在屏幕上面的偏移量 CGPoint transP = [pan translationInView:self.mainV]; // 在这里为什么不用Transform,是因为我们移动时,要改变的尺寸大小.用Transform只能改变它的位置. // self.mainV.transform = CGAffineTransformTranslate(self.mainV.transform, transP.x, 0); // 计算mainV的Frame self.mainV.frame = [self frameWithOffsetX:transP.x]; // 每次移动时判断当前MainV的x值是大于0还是小于0.如果是大于0 , 显示左边,小于0 显示右边 if (self.mainV.frame.origin.x > 0) { self.rightV.hidden = YES; }else if(self.mainV.frame.origin.x < 0){ self.rightV.hidden = NO; } // 注意要做复位 [pan setTranslation:CGPointZero inView:self.mainV];}// 根据偏移量计算mainV的frame.- frameWithOffsetX:offsetX{ // 取出最原始的Frame CGRect frame = self.mainV.frame; frame.origin.x += offsetX; // 获取屏幕的宽度 // (计算Y值如果下图:找最大值.当Main.x拖动最大的时候,Main.y值也最大.main.x最大为屏幕的宽度) // 设定一个最大Y值MaxY为100,正好.当max.x为屏幕的宽度时,最大Y等于100 // 所以Y值等于 main.y = main.x * maxY / ScreenW; // 有可能frame.origin.x有可能是小于0,小于0的话, 得出的Y值就会小于0,小于0就会出现, 红色的View向上走. // 对结果取绝对值. frame.origin.y = fabs(frame.origin.x * maxY / screenW); // 计算frame的高度(当前Main的高度等于屏幕的高度减去两倍的Y值.) frame.size.height = screenH - 2 * frame.origin.y; // 返回计算好的frame. return frame;}

图片 6计算Y值.png图片 7计算高度.png

字段设置.png

正向传播的过程,即数据从输入层输入,经过隐含层,输出层的计算得到预测值,预测值为输出层的输出结果。网络层的输出即该层中所有节点的输出值的集合。我们以图一的神经网络结构为例,分析正向传播过程。

文章1 基于互信息与词语共现的领域术语自动抽取方法研究

总体思路:通过计算术语的领域性和完备性来抽取术语

1 领域性计算:
(1)提供一个种子词,查找相同领域内的其他术语(采用经典的Jaccard因子);
(2)文档中查找包含种子词的所有文档,计算出文档中包含的共现词的共现频率和绝对频率,计算 共现词和种子词之间的相关性
2 完备性计算:
(1)将相关性值最大的n个候选术语作为抽取到的新候选术语,通过 MI计算术语库和新术语之间词的结合性 ,选取值的前n个词作为新抽取出的术语;

好了,现在开始开始搭建新的项目了,首先在Storyboard上搭建最基本的布局,并将控件基本布局到相应的位置,以备我们更方便的添加约束。

图片 8Snip20150706_21.png图片 9Snip20150706_22.png图片 10Snip20150706_24.png图片 11Snip20150707_25.png

第三步:当手指松开时做到自动定位.

// 当手指拖动时调用.-pan:(UIPanGestureRecognizer *)pan{ // 获取手指在屏幕上面的偏移量 CGPoint transP = [pan translationInView:self.mainV]; // 计算mainV的Frame self.mainV.frame = [self frameWithOffsetX:transP.x]; // 每次移动时判断当前MainV的x值是大于0还是小于0.如果是大于0 , 显示左边,小于0 显示右边 if (self.mainV.frame.origin.x > 0) { self.rightV.hidden = YES; }else if(self.mainV.frame.origin.x < 0){ self.rightV.hidden = NO; } // 判断手指的状态 if(pan.state == UIGestureRecognizerStateEnded){ // 当手指松开时进入执行 // 记录最终判断结果后.定位的值. CGFloat target = 0; // 当手指松开,要判断MainV的x值是否大于屏幕的一半.如果大于屏幕一半时, 自动定位到右边一个位置. if (self.mainV.frame.origin.x > screenW * 0.5) { target = targetR; }else if(CGRectGetMaxX(self.mainV.frame) < screenW * 0.5){ // 当手指松开,要判断MainV的最大的X值是否小于屏幕的一半.如果小于屏幕的一半时, 自动定位到左边的位置. target = targetL; } // 最终定位的x值 - 当前的main.x的值.求出偏移量.使其定位 CGFloat offsetX = target - self.mainV.frame.origin.x; // 根据偏移量设置mainV的frame值 CGRect frame = [self frameWithOffsetX:offsetX]; [UIView animateWithDuration:0.25 animations:^{ // 伴随动画设置frame self.mainV.frame = frame; }]; } // 注意要做复位 [pan setTranslation:CGPointZero inView:self.mainV];}

图片 12求出偏移量.png

2、调整百分比计算方式;
列、行、汇总的百分比
3、对应父级项目的百分比显示;
09年,10年各自计算本年的比例。

  1. 得到隐含层的输出y1,y2,y3

    图片 13image.png图片 14image.png图片 15image.png

  2. 获取到第二层的隐含层输出y4,y5获取到第二层的隐含层输出y4,y5,输入的数据也就是第一层隐含层的输出数据y1,y2,y3。

    图片 16image.png图片 17image.png

  3. 通过输出层得到最后的预测值y

    图片 18image.png

需要说明的地方

(1) 相关性计算公式

图片 19

image.png

(2)完备性计算公式

图片 20

image.png

(3)整体抽取过程

图片 21

image.png

(4)整体框架图

图片 22

image.png

(5)实验结果

图片 23

image.png

到了这里针对单个的控件的布局基本完成了,细心的你可能会发现以上的操作都没有进行关联以及没有对width进行约束。那么下面我们就要开始进行三者的关联以及width上的设置。

图片 24

根据样本的真实类标,计算模型预测的结果与真实类标的误差。然后将该误差反向传播到各个隐含层。计算出各层的误差,再根据各层的误差,更新权重。

值得借鉴的地方

(1)对术语相关性的计算
(2)完备性计算较简单,可以考虑换一种方式计算


因为悬停的view处与两个imageView的中间,所以我们只需要对它进行处理就好了

图片 25Snip20150707_27.png图片 26Snip20150707_29.png图片 27Snip20150707_33.png图片 28Snip20150707_34.png图片 29Snip20150707_36.png

按年汇总.png

  1. 计算输出层的误差其中z为该样本的类标

    图片 30image.png

  2. 计算第二层隐含层的误差

    图片 31image.png图片 32image.png

  3. 计算第一次隐含层的误差

    图片 33image.png图片 34image.png图片 35image.png

文章2 基于互信息改进算法的新词发现对中文分词系统改进

1 确定2元待扩展种子词;
2 将2元种子词扩展为2~n元(PMI算法);
3 过滤候选新词(根据自定义词表);
4 人工判定;

该算法重要的是作者提出的PMI算法,公式如下

图片 36

image.png

以4元字串(wi-1,wi,wi+1,wi+2)为例,若满足

图片 37

image.png

则认为字串(wi,wi+1)是一个词或者词的一部分的概率较大,则词串向右扩展
然后将(wi,wi+1)作为一个词,计算其和左侧的wi-1和右侧的wi-2的PMI,若PMI(((wi,wi+1),wi-1)) > PMI(((wi,wi+1),wi+2)) ,则向左拓展,否则向右扩展。

算法整体流程:

图片 38

image.png

好了,到了这里我们在AutoLayout上要做的事情就这些了,下面我们就可以安心的写代码了。
@interface ViewController ()/**中间的View*/@property (weak, nonatomic) IBOutlet UIView *centreView;/**上面的ImageView*/@property (weak, nonatomic) IBOutlet UIImageView *topImageView;/**centreView的top约束*/@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topConstraint;/**centreView的bottom约束*/@property (weak, nonatomic) IBOutlet NSLayoutConstraint *bottomConstraint;/**topImageView暂禁用的约束*/@property (weak, nonatomic) IBOutlet NSLayoutConstraint *hiddenConstraint;@end

- scrollViewDidScroll:(UIScrollView *)scrollView{ //获得top图片的高度 CGFloat imageH = self.topImageView.frame.size.height; //获取偏移量 CGFloat offsetY = scrollView.contentOffset.y; //centrView的frame CGRect centreFrame = self.centreView.frame; if (offsetY>=imageH) { //将centreView的向上和向下的约束禁用 self.bottomConstraint.active = NO; self.topConstraint.active = NO; //将topImageView与bottomImageView的约束使用关联 self.hiddenConstraint.active = YES; //悬停在位置 centreFrame.origin.y = 0; self.centreView.frame = centreFrame; //添加在scrollView的父控件 [self.view addSubview:self.centreView]; }else{ //添加在topIamgeView的下面 centreFrame.origin.y = imageH; self.centreView.frame = centreFrame; [scrollView addSubview:self.centreView]; //记住一定要先添加到scrollView上之后在修改约束的内容,不然添加的约束会不成,因为系统无法建立他们之间的联系。 self.hiddenConstraint.active = NO; self.topConstraint.active = YES; self.bottomConstraint.active = YES; } //等比例的伸缩 CGFloat scale= 1-(offsetY/60); scale = (scale>=1)?scale :1; self.topImageView.transform = CGAffineTransformMakeScale(scale, scale);}
  • 在子控件的尺寸不能通过UIScrollView来计算,可以通过以下方式计算

    • 设置固定值(width==100,height==300)
    • 相对于UIScrollView以外的其他控件来计算尺寸
  • 在UIScrollView里面布局子控件,sb里面默认是是需要子控件的尺寸以及子控件与UIScrollView之间的间距来计算出scroller的conentSize的。所以这就是上面的子控件要与父控件来等宽的原因了。

  • UIScrollView的frame应该通过子控件以外的其他控件来计算

限于mac版excel,此处应使用公式,怎么在数据透视表中使用公式??第二部分将介绍。
4、计算差异
为了直观看出09年与10年的差异,使用“差异”

  • 新的偏置=原偏置+该节点的误差×激活函数的导函数的值
  • 新的权重=原权重+学习速率×该节点的误差×激活函数的导函数的值×与该节点相连的输入值

文章3 C-value 值和unithood 指标结合的中文科技术语抽取

1 计算unithood指标
2 计算termhood指标
3 候选术语过滤

unithood计算公式

图片 39

image.png

termhood计算公式

图片 40

image.png

图片 41

  1. 更新输入层与第一层隐含层之间的权重

    图片 42image.png图片 43image.png图片 44image.png

  2. 更新第一层隐含层与第二层隐含层之间的权重

    图片 45image.png图片 46image.png

  3. 更新第二层隐含层与输出层之间的权重

    图片 47image.png

文章4 C值和互信息相结合的术语抽取

1 基于C值的术语上下文信息计算
2 基于互信息的字串内部结合强度计算
3 术语CMI值的计算

1 基于C值的术语上下文信息计算,可以通过公式:f(a)是a的tf

图片 48

image.png

2 基于互信息的字串内部结合强度计算,公式如图

图片 49

image.png

3 术语CMI值的计算,公式和方法,如下:

图片 50

image.png

文章总体的算法框架如下:

图片 51

image.png

计算差异.png

以上就是反向传播的过程。误差从输出层反向的传到输入层,然后再从输入层向前更新权重。

文章5 基于词频分布变化统计的术语抽取方法

1 总结语法规则,过滤候选词
2 基于术语词频分布变化统计termhood

1 总结的语法规则
(1)术语中不包含叹词、成语、代词、处所词、标点符号、非语素词、语气词和状态词;
(2)术语不得以词性为助词、连词或后接成分的词开头;
(3)术语不得以词性为前接成分、方位词、连词或助词的词结尾;
(4)术语中至少包含下列词性中的一种:名词、动词、量词、后接成分、习用语、简称略语;

2 基于术语词频分布变化统计的termhood计算方法

图片 52

image.png

发现规律
(1)文档的主要内容和该术语关系密切,则该术语被提及的次数很频繁;
(2)文档与该术语属于同一类别内,但并不是直接相关,所以会有所提及,但次数较少;
所以,词频分布的变化能对鉴别一个候选项是否为专业术语做出重要的指示。

故总结出的D-Value公式:

图片 53

image.png

图片 54

image.png

效果

上一篇 JAVAEE与人工智能目录 下一篇

图片 55

计算差异效果.png

5、计算差异百分比

图片 56

本文由必威发布于必威-编程,转载请注明出处:抽屉效果.gif,误差从输出层反向的传到输入层

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。