精华内容
下载资源
问答
  • 深度学习中常用的参数初始化方法及caffe中的初始化方法介绍 本文首先介绍了深度学习中常用的权重初始化方法,然后介绍 caffe 中的初始化方法的使用。 1. 深度学习中常用的权重初始化方法 1.1 随机初始化(Gaussian)...

    深度学习中常用的参数初始化方法及caffe中的初始化方法介绍

    本文首先介绍了深度学习中常用的权重初始化方法,然后介绍 caffe 中的初始化方法的使用。

    1. 深度学习中常用的权重初始化方法

    1.1 随机初始化(Gaussian)

    顾名思义就是将权重在符合某一分布 (通常是高斯分布) 的情况下进行随机始化。 操作非常的简单, 但是也有它自身的一些问题。当网络的层数比较深时,输出会快速的趋向于零,从而导致梯度消失的问题。

    1.2 Xavier Initiallization

    针对上面的问题,并且由于网络的深度不断的加深,所以 Xavier Glorot 等在2010年提出 (Understanding the difficulty of training deep feedforward neural networks) 了 Xavier 初始化方法。用一句话概括就是通过使输入和输出的方差一致,来避免所有输出值都趋向于0,从而缓解梯度消失的问题。

    值得注意的是, 在 Xavier 提出的那个年代(2010)大家普遍使用的激活函数还是以sigmoid 和 tanh 代表的线性函数,我们现在所常用的ReLU在2000年被提出,但是直到2011年才被证明使用ReLU在更深的神经网络中可以取得更好的效果。因此 Xavier 也是针对上面的 tanh 激活函数的。
    关于Xavier的推导可以参考Xavier Initialization 的理解与推导.

    1.3 Kaiming(MSRA/He) Initiallization

    2011 年 Xavier Glorot(对,还是他) 等人证明ReLU在深度神经网络中的具有更好的表现,之后ReLU开始被大家广泛应用,但是我们提到 Xiaver Initiallization 是针对 sigmoid 和 tanh 的,所以对于新的激活函数,我们需要新的初始化方法,在这个背景, He Kaiming 等人在 2015年提出了针对 ReLU 的初始化方法,具体可以参考 Delving Deep into Rectifiers:Surpassing Human-Level Performance on ImageNet Classification。关于MRSA的推导可以参考权值初始化 - Xavier和MSRA方法.

    最后值得一提的是 batch normalization, 虽然它不是一种参数初始化的方法,但是它可以调整数据的分布,也就是说当 initialization 做的不够好的时候,batch normalization 可以起到补充的作用。batch normalization 通常放在卷积层和激活函数之间, 这样会使卷积层的输出限制在某一个范围之内,或者满足某一种分布,比如高斯分布。

    2. caffe 中的初始化方法

    以 Lenet-5 的第一个卷积层为例。

    layer {
      name: "conv1"
      type: "Convolution"
      bottom: "data"
      top: "conv1"
      param {
        lr_mult: 1
      }
      param {
        lr_mult: 2
      }
      convolution_param {
        num_output: 20
        kernel_size: 5
        stride: 1
        weight_filler {
          type: "xavier"
        }
        bias_filler {
          type: "constant"
        }
      }
    }
    

    上面有 weight_filler 和 bias_filler, 他们的类型分别为 xavier & constant。
    在 “caffe\include\caffe” 中有 filler.hpp 的头文件, 里面有各种类型的 filler 的定义。

    2.1 constant filler
    constant filler 可以将参数初始化为一个常数,具体是什么常数,自己可以定义。value 的值,默认为0。

    weight_filler {
          type: "constant"
          value: 1
        }
    

    2.2 Gaussian Filler
    原理不再赘述,如上所述。

    weight_filler {
          type: "gaussian"
          std: 0.01
        }
    

    2.3 Xavier Filler

    weight_filler {
          type: "xavier"
        }
    

    2.4 MSRA(He/Kaiming) Filler

    weight_filler {
          type: "MSRA"
        }
    

    除此之外 caffe 还提供了其他几种 filler。

    • Uniform Filler 将参数随机初始化为符合均匀分布的初始值。
    • positive_unitball Filler 让每一个单元的输入的权值的和为 1, 可以有助于防止权值初始化过大,使激活函数(sigmoid函数)进入饱和区。所以呢,它应该比较适合simgmoid形的激活函数。
    • Bilinear Filler 常用在反卷积神经网络里的权值初始化。

    参考文献

    1. 聊一聊深度学习的weight initialization
    2. caffe中权值初始化方法
    展开全文
  • 归纳了目前常用的随机地震荷载和结构滞变恢复力模型,对扩散理论方法、随机平均法、摄动法、矩截断法、数字模拟方法和等价线性化法等非线性系统随机振动的常用分析方法进行了讨论。总结了等价线性化方法的理论、发展...
  • 欢迎关注”生信修炼手册”!孟德尔随机化研究借助遗传变异这一工具变量,来评估暴露因素与结局变量之间的因果效用。为了准确评估因果效应的大小,有多种方法相继被发明。本文重点看下其中常用的两种方...

    欢迎关注”生信修炼手册”!

    孟德尔随机化研究借助遗传变异这一工具变量,来评估暴露因素与结局变量之间的因果效用。为了准确评估因果效应的大小,有多种方法相继被发明。本文重点看下其中常用的两种方法。

    1. IVW

    IVW全称如下

    Inverse-Variance Weighted

    称之为逆方差加权,由Burgess等提出,文章链接如下

    https://onlinelibrary.wiley.com/doi/pdf/10.1002/gepi.21758

    每个遗传变异k计算得到的暴露因素与结局变量的因果效应值用如下的比值表示

    Xk表示的是在遗传变异与暴露因素的gwas分析中,k这个位点对应的效应值,beta值。类似的,Yk表示的是在遗传变异与结局变量的gwas分析中,k这个位点对应的效应值。这种计算方法称之为比值法。

    对于所有工具变量总的因果效应值,通过meta分析中的固定效应模型来评估,公式如下


    对应的标准误计算如下


    通过加权线性回归来进行求解,强制线性回归的截距项为0。在IVW中,假设各个遗传变异是相互独立的。当存在多效性时,对因果效应的估计会出现偏差。

    2. MR-Egger

    MR-Egger回归对IVW方法进行了修改,不在强制线性回归的截距项为0,而是用截距项来表示工具变量的平均多效性,对应的文章链接如下

    https://academic.oup.com/ije/article/44/2/512/754653

    采用了meta分析中检测偏倚的egger检验方法,用回归直线的截距来横标偏倚性。在meta分析中,常通过漏斗图是否对称来判断数据是否存在偏倚,这种方法依靠的是视觉判断,确实量化机制,而egger检验就是一种量化漏斗图的方式,将漏斗图中的x和y进行线性回归,如果回归方程的截距为0,说明不存在偏倚;截距不为0,说明存在偏倚。

    这里的偏倚在MR分析中,通常就是指遗传变异的多效性。当存在多效性时,用MR-Egger方法会更加合适。

    在TwoSampleMR包中,默认就是采用这两种方法来评估效应值。

    ·end·

    —如果喜欢,快分享给你的朋友们吧—

    本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。

      更多精彩

      写在最后

    转发本文至朋友圈,后台私信截图即可加入生信交流群,和小伙伴一起学习交流。

    扫描下方二维码,关注我们,解锁更多精彩内容!

    生物信息入门

    只差这一个

    公众号

    点击下方“阅读原文”,我们一起进步!

    展开全文
  • 随机化算法-数值随机化算法

    千次阅读 2016-10-16 15:09:23
    线性同余法是产生伪随机数的最常用的方法。由线性同余法产生的随机序列a0,a1,…,an满足 其中b³0,c³0,d£m。d称为该随机序列的种子。如何选取该方法中的常数b、c和m直接关系到所产生的随机序列的随机性能。...

    随机数

    随机数在随机化算法设计中扮演着十分重要的角色。在现实计算机上无法产生真正的随机数,因此在随机化算法中使用的随机数都是一定程度上随机的,即伪随机数。

    线性同余法是产生伪随机数的最常用的方法。由线性同余法产生的随机序列a0,a1,…,an满足


    其中b³0c³0d£md称为该随机序列的种子。如何选取该方法中的常数bcm直接关系到所产生的随机序列的随机性能。从直观上看,m应取得充分大,因此可取m为机器大数,另外应取gcd(m,b)=1,因此可取b为一素数。

    用随机投点法计算pi

    设有一半径为r的圆及其外切四边形。向该正方形随机地投掷n个点。设落入圆内的点数为k。由于所投入的点在正方形上均匀分布,因而所投入的点落入圆内的概率为           。所以当n足够大

    时,kn之比就逼近这一概率。从而

    double Darts(int n)
    { // 用随机投点法计算值
        static RandomNumber dart;
        int k=0;
        for (int i=1;i <=n;i++) {
          double x=dart.fRandom();
          double y=dart.fRandom();
          if ((x*x+y*y)<=1) k++;
          }
        return 4*k/double(n);
    }

    计算定积分

    f(x)[01]上的连续函数,且0£f(x)£1

    需要计算的积分为                 ,积分I等于图中的面积G


    在图所示单位正方形内均匀地作投点试验,则随机点落在曲线下面的概率为

    假设向单位正方形内随机地投入n个点(xi,yi)。如果有m个点落入

    G内,则随机点落入G内的概率

    解非线性方程组

    求解下面的非线性方程组


    其中,x1,x2,…,xn是实变量,fi是未知量x1,x2,…,xn的非线性实函数。要求确定上述方程组在指定求根范围内的一组解

    在指定求根区域D内,选定一个随机点x0作为随机搜索的出发点。在算法的搜索过程中,假设第j步随机搜索得到的随机搜索点为xj。在第j+1步,计算出下一步的随机搜索增量Dxj。从当前点xjDxj得到第j+1步的随机搜索点。当x<e时,取为所求非线性方程组的近似解。否则进行下一步新的随机搜索过程。








    展开全文
  • 一、背景知识GB 2312-80 是中国国家标准简体...中国大陆几乎所有中文系统和国际化的软件都支持 GB 2312。GB2312 标准共收录 6763 个汉字,其中一级汉字 3755 个,二级汉字 3008 个;同时收录了包括拉丁字母、希腊...

    一、背景知识

    GB 2312-80 是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,由中国国家标准总局发布,1981年5月1日实施。GB2312 编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持 GB 2312。

    GB2312 标准共收录 6763 个汉字,其中一级汉字 3755 个,二级汉字 3008 个;同时收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的 682 个字符。GB2312 的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆 99.75% 的使用频率。对于人名、古汉语等方面出现的罕用字,GB2312 不能处理,这导致了后来 GBK 及 GB18030 汉字字符集的出现。

    GB2312 中对所收汉字进行了“分区”处理,每区含有 94 个汉字/符号。这种表示方式也称为区位码。

    01 - 09 区为特殊符号。

    16 - 55 区为一级汉字,按拼音排序。

    56 - 87 区为二级汉字,按部首/笔画排序。

    10 - 15 区及 88 - 94 区则未有编码。举例来说,“啊”字是 GB2312 之中的第一个汉字,它的区位码就是 1601。

    每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”,第二个字节称为“低位字节”。“高位字节”使用了 0xA1 - 0xF7(把 01 - 87 区的区号加上 0xA0),“低位字节”使用了 0xA1 - 0xFE(把 01 - 94 位的位号加上 0xA0)。 由于一级汉字从 16 区起始,汉字区的“高位字节”的范围是 0xB0 - 0xF7,“低位字节”的范围是 0xA1 - 0xFE,占用的码位是 72 * 94 = 6768。其中有 5 个空位是 D7FA - D7FE。例如“啊”字在大多数程序中,会以两个字节,0xB0(第一个字节)0xA1(第二个字节)储存。(与区位码对比:0xB0 = 0xA0 + 16, 0xA1 = 0xA0 + 1)。

    国家标准 GB 18030-2005《信息技术 中文编码字符集》,是中华人民共和国现时最新的内码字集,与 GB 2312-1980 完全兼容,与 GBK 基本兼容,支持 GB 13000 及 Unicode 的全部统一汉字,共收录汉字 70244 个。现行版本为国家质量监督检验总局和中国国家标准化管理委员会于2005年11月8日发布,2006年5月1日实施,为在中国境内所有软件产品支持的强制标准。

    二、随机生成常用汉字的 C# 程序

    新建Java项目,创建代码片段:

    import java.io.UnsupportedEncodingException;

    import java.util.Random;

    /**

    * 随机生成常见的汉字

    *

    * @author xuliugen

    *

    */

    public class GeneCharTest {

    public static void main(String[] args) {

    for (int i = 1; i < 24; i++) {

    System.out.print(getRandomChar() + " ");

    }

    }

    private static char getRandomChar() {

    String str = "";

    int hightPos; //

    int lowPos;

    Random random = new Random();

    hightPos = (176 + Math.abs(random.nextInt(39)));

    lowPos = (161 + Math.abs(random.nextInt(93)));

    byte[] b = new byte[2];

    b[0] = (Integer.valueOf(hightPos)).byteValue();

    b[1] = (Integer.valueOf(lowPos)).byteValue();

    try {

    str = new String(b, "GBK");

    } catch (UnsupportedEncodingException e) {

    e.printStackTrace();

    System.out.println("错误");

    }

    return str.charAt(0);

    }

    }

    运行结果:

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    展开全文
  • Swift如何快速随机化数组中元素

    千次阅读 2016-11-01 09:37:50
    随机化数组元素或称为”洗牌”,是比较常用的算法,常常应用到一些游戏中.在Swift中我们可以有很多种选择.这里我只说两种:一种是扩展Array的功能,另外一种是利用GameplayKit中的内置方法.首先上代码:extension Array{ ...
  • 您可能感兴趣的文章:Python实现基于权重的随机数2种方法TensorFlow中权重的随机初始方法Python利用带权重随机数解决抽奖和游戏爆装备问题Python random模块(获取随机数)常用方法和使用例子P
  • 第7章 随机化算法.ppt

    2019-12-08 10:45:55
    * 第7章 随机化算法 * 学习要点 理解产生伪随机数的算法 掌握数值随机化算法的设计思想 掌握蒙特卡罗算法的设计思想 掌握拉斯维加斯算法的...线性同余法是产生伪随机数的最常用的方法由线性同余法产生的随机序列a0,a
  • 避免过拟合的常用方法避免过拟合的常用方法奥卡姆剃刀原则深度学习过拟合问题解决过拟合的方法添加噪声提前停止测试数据集扩增随机裁剪正则Dropout总结 避免过拟合的常用方法 奥卡姆剃刀原则 奥卡姆剃刀定律...
  • 前者随机方法速度快删除和插入指定位置速度慢,后者随机访问速度慢删除和插入指定位置速度快;两者都是线程不安全;列表与数组之间区别等等。列表与数组之间很大一个区别就是:数组在其初始就需要给它确定...
  • 随机化算法学习笔记

    2020-05-19 10:42:06
    基本特征 对所求解问题的同一实例用同一随机化算法求解两次可能得到完全不同的效果(不确定的算法) ...计算机只能产生伪随机数,最常用的方法是线性同余法 a0=d(d≥m) an=(ban-1+c) mod m(b≥0,c≥0) 随机
  • 机器学习中超参数搜索的常用方法为 Grid Search,然而如果参数一多则容易碰到维数诅咒问题... Bengio 等人在 《Random Search for Hyper-Parameter Optimization》 中提出了随机化搜索的方法。他们指出大部分参数...
  • 随机化算法基础

    千次阅读 2008-03-29 10:49:00
    随机化算法在分析某些涉及概率分析的问题上具有重要意义,因为输入的分布是...下面,有两个常用的算法来实现输入分布的随机化,以给定的输入数组为例,我们的目标是把A[1..n]随机排列。方法一:为数组的每个元素A赋一
  • 网络参数初始化方法 最粗暴 莫过于 全零初始化 。顾名思义,所有参数全部初始化为0。想法很好,简便省事儿,还可使得初始化全零时参数期望与网络稳定时参数期望一致为0。 But,参数全为0,那么同层网络中,...
  • 对基于宽场随机荧光漂白的超分辨显微方法进行了研究。通过对获取的荧光漂白图像进行差分处理,获得...该方法克服了常用的基于单分子精确定位技术需要对荧光分子进行反复地激活猝灭,并难以适用于普通荧光染料的缺点。
  • 大多数群体智能算法(启发式智能优化算法)初始种群中个体的生成是给定范围内随机生成,导致初始个体具有较大的随机性和不确定性,所以可以通过改进初始种群的方式改进算法优化和收敛性能,实现局部开发和全局探索...
  • 转自:知识图谱论坛 ...常用的Graph Embedding方法有: 1、DeepWalk 是第一个被提出来使用表示学习(或深度学习)社区的技术的网络嵌入方法。DeepWalk 通过将节点视为单词并生成短随机游走作为句子来弥...
  • 概率分析和随机化

    2010-11-25 10:32:00
    <br />概率分析和随机算法学习笔记    随机数在随机化算法设计中扮演着十分重要的角色...线性同余法是产生伪随机数的最常用的方法。由线性同余法产生的随机序列a0,a1,…,an满足  a0 =d  
  • 针对现有主流保护方法存在特征明显、模式单一等问题,以 LLVM 开源编译框架为基础,提出了一种基于融合编译软件多样化保护方法,该方法将目标软件进行随机化加密处理,并在编译层面与掩护软件进行深度融合,通过...
  • C++中list使用方法常用list操作总结 一、List定义: List是stl实现双向链表,与向量(vectors)相比, 它允许快速插入和删除,但是随机访问却比较慢。使用时需要添加头文件 #include 二、List定义和初始: ...
  • JavaScript 常用方法封装 1. 获取数据类型,返回字符串 2. 字符串格式(仿ES6模板字符串) 3. 异步加载JS 4. DOM事件兼容解决方案 5. 拷贝对象 6. 鼠标滚轮事件处理 7. 函数设置执行间隔(针对频繁触发...
  • pytorch的随机种子

    2020-09-04 21:48:00
    在深度学习中,比较常用的随机方法的应用有:网络的随机初始,训练集的随机打乱等。 随机种子的取值范围? 可以是任意数字,如10,1000 在pytorch中使用随机种子 主要用于复现之前跑的结果。 在使用PyTorch时,...
  • 深度学习中的正则化什么是正则化一些常用的正则化方法权重衰减L1正则化L2正则化Elastic网络正则化随机失活(dropout)正则化方法的使用pytorch使用权重衰减(Wight Decay)附录 什么是正则化 “正则化"这个词听起来十分...
  • 当处理连续随机变量和微分函数时,常用的重新参数化方法[3]通常非常有效。 但是,该方法不适用于处理离散随机变量或不可微函数。 这就是为什么Storchastic专注于离散随机变量,不可微函数和序列模型的梯度估计器。 ...
  • 随机种子是针对随机方法而言的。常见的随机方法有 生成随机数,以及其他像 随机排序 之类的,后者本质上也是基于生成随机数来...在深度学习中,比较常用的随机方法的应用有:网络的随机初始,训练集的随机打乱等。
  • 列表初始 list1 = ['Java', 'Python', 'Php', 'C#', 'JavaScript', 2020] 2、随机访问 list1 = ['Java', 'Python', 'Php', 'C#', 'JavaScript', 2020] print(list1[0]) # Java print(list1[-1]) # 2020 3...
  • 常用代码优化方法

    千次阅读 2019-04-26 17:18:00
    容器类初始化的地时候指定长度 ArrayList(底层数组)随机遍历快,LinkedList(底层双向链表)添加删除快 集合遍历尽量减少重复计算 使用 Entry 遍历 Map 大数组复制使用System.arraycopy ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 579
精华内容 231
关键字:

常用的随机化方法