维度

Group Normalization算法笔记

不羁岁月 提交于 2019-11-27 10:15:53
Group Normalization算法笔记 https://blog.csdn.net/u014380165/article/details/79810040 论文:Group Normalization 论文链接: https://arxiv.org/abs/1803.08494 Group Normalization(GN)是针对Batch Normalization(BN)在batch size较小时错误率较高而提出的改进算法,因为BN层的计算结果依赖当前batch的数据,当batch size较小时(比如2、4这样),该batch数据的均值和方差的代表性较差,因此对最后的结果影响也较大。如图Figure1所示,随着batch size越来越小,BN层所计算的统计信息的可靠性越来越差,这样就容易导致最后错误率的上升;而在batch size较大时则没有明显的差别。虽然在分类算法中一般的GPU显存都能cover住较大的batch设置,但是在目标检测、分割以及视频相关的算法中,由于输入图像较大、维度多样以及算法本身原因等,batch size一般都设置比较小,所以GN对于这种类型算法的改进应该比较明显。 因此Group Normalization(GN)的思想并不复杂,简单讲就是要使归一化操作的计算不依赖batch size的大小,原文的这段话概括得非常好:GN

numpy.squeeze()函数

纵然是瞬间 提交于 2019-11-27 08:04:48
numpy.squeeze()函数 语法 :numpy.squeeze(a,axis = None) 1)a表示输入的数组; 2)axis用于指定需要删除的维度,但是指定的维度必须为单维度,否则将会报错; 3)axis的取值可为None 或 int 或 tuple of ints, 可选。若axis为空,则删除所有单维度的条目; 4)返回值:数组 5) 不会修改原数组; 作用 :从数组的形状中删除单维度条目,即把shape中为1的维度去掉 场景 :在机器学习和深度学习中,通常算法的结果是可以表示向量的数组(即包含两对或以上的方括号形式[[]]),如果直接利用这个数组进行画图可能显示界面为空(见后面的示例)。我们可以利用squeeze()函数将表示向量的数组转换为秩为1的数组,这样利用matplotlib库函数画图时,就可以正常的显示结果了。 例1 例2 例3 结论 :根据上述例1~3可知,np.squeeze()函数可以删除数组形状中的单维度条目,即把shape中为1的维度去掉,但是对非单维的维度不起作用。 例5 例6 例7 例8 :matplotlib画图示例 来源: https://blog.csdn.net/weixin_43312083/article/details/99581966

桥接模式---结构型

二次信任 提交于 2019-11-27 07:29:50
1 基础知识 定义: 将抽象部分与它的具体实现部分分离,使得它们都可以独立变化。 特征: 通过组合的方式建立两个之间的联系而不是继承。 使用场景: 抽象和具体实现之间增加更多的灵活性;一个类存在两个(多个)独立变化的维度,且这两个(多个)维度需要独立扩展即抽象和具体实现独立扩展;不希望使用继承或因多层继承导致类爆炸。 优点: 分离抽象部分及具体实现部分;提高了系统的可扩展性;符合开闭原则;符合合成复用原则。 缺点: 增加了系统的理解与设计难度;需要正确地识别出系统中两个独立变化的维度。 来源: https://www.cnblogs.com/youngao/p/11351180.html

分布式幂等问题解决方案三部曲

家住魔仙堡 提交于 2019-11-26 23:10:36
欢迎关注公众号:404P(技术无涯),作者是蚂蚁金服的一线开发,分享自己的成长和思考之路。内容涉及数据、工程、算法。 纲要 文章目的 :本文旨在提炼一套分布式幂等问题的思考框架,而非解决某个具体的分布式幂等问题。在这个框架体系内,会有一些方案举例说明。 文章目标 :希望读者能通过这套思考框架设计出符合自己业务的完备的幂等解决方案。 文章内容 : (1)背景介绍,为什么会有幂等。 (2)什么是幂等,这个定义非常重要,决定了整个思考框架。 (3)解决幂等问题的三部曲,也是作者的思考框架。 (4)总结 一 背景 分布式系统由众多微服务组成,微服务之间必然存在大量的网络调用。下图是一个服务间调用异常的例子,用户提交订单之后,请求到A服务,A服务落单之后,开始调用B服务,但是在A调用B的过程中,存在很多不确定性,例如B服务执行超时了,RPC直接返回A请求超时了,然后A返回给用户一些错误提示,但实际情况是B有可能执行是成功的,只是执行时间过长而已。 用户看到错误提示之后,往往会选择在界面上重复点击,导致重复调用,如果B是个支付服务的话,用户重复点击可能导致同一个订单被扣多次钱。不仅仅是用户可能触发重复调用,定时任务、消息投递和机器重新启动都可能会出现重复执行的情况。在分布式系统里,服务调用出现各种异常的情况是很常见的,这些异常情况往往会使得系统间的状态不一致,所以需要容错补偿设计

“猜你喜欢”实现策略?

萝らか妹 提交于 2019-11-26 22:16:28
有没有想过自己在亚马逊眼中你是什么样子?答案是:你是一个很大、很大的表格里一串很长的数字。这串数字描述了你所看过的每一样东西,你点击的每一个链接以 及你在亚马逊网站上买的每一件商品;表格里的其余部分则代表了其他数百万到亚马逊购物的人。你每次登陆网站,你的数字就会发生改变;在此期间,你在网站上 每动一下,这个数字就会跟着改变。这个信息又会反过来影响你在访问的每个页面上会看到什么,还有你会从亚马逊公司收到什么邮件和优惠信息。 许 多年来,推荐系统的开发者试过用各种各样的方法来采集和解析所有这些数据。最近这段时间,多数人都选择使用被称为个性化协同推荐 (Personalized Collaborative Recommender)的算法。这也是亚马逊、Netflix、Facebook 的好友推荐,以及一家英国流行音乐网站 Last.fm 的核心算法。说它 “个性化”,是因为这种算法会追踪用户的每一个行为(如浏览过的页面、订单记录和商品评分),以此进行推荐;它们可不是瞎猫碰上死耗子——全凭运气。说它 “协同”,则是因为这种算法会根据许多其他的顾客也购买了这些商品或者对其显示出好感,而将两样物品视为彼此关联,它不是通过分析商品特征或者关键词来进 行判断的。 不同类型的个性化协同推荐系统最晚从 1992 年开始便已经出现。除了 GroupLens 计划,另一项早期的推荐系统是 MIT 的

python模块之numpy,pandas

耗尽温柔 提交于 2019-11-26 17:17:21
numpy: 是 Python 的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库简单来说:就是支持一维数组和多维数组的创建和操作,并有丰富的函数库。 直接看例子 一维数组: k=np.array([1,2,3,4]) np.ndim(k) #查看维数 1 np.shape(k) #显示维度的元素个数 (4,) k.size #总共多少个数字 4 二维数组: m=np.array([[1,2,3,4],[0.1,0.2,0.3,0.4]]) np.shape(m) # (2, 4) #两个维度,一个维度4个数字 m array([[1. , 2. , 3. , 4. ], [0.1, 0.2, 0.3, 0.4]]) m.size 8 m[:,0:2] #显示每个维度里面第一和第二个数字 array([[1. , 2. ], [0.1, 0.2]]) 下面看看一个图 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的,它本身有很多的函数去处理维度层面的数据。 例如: datas=pd.date_range('20191125',periods=6) df=pd.DataFrame(np.random.randn(6,4),index=datas,columns=list('abcd')) #通过numpy生成(6,4