权重W不能全部初始化为0,原因很简单,我们可以自己在本子上推导一下,假设现有一个含有一个隐藏层,隐藏层含有两个神经元初始输入为两个向量的网络,如果权重初始化全部为0,那么,第一层的输出,会和第二层的输出相等,这样我们反向传播更新权重的时候也会发现,两个W始终相等,所以这种初始化的方法行不通,另外再说b,这里得说一下的就是b是可以被初始化为0的,对训练效果并没有多少影响。那么,w,b到底怎样将他们初始化呢,其实可以用随机数的方法将他们初始化。用python来写就是像这样:

W_1 = np.random.randn((2,2))*0.01
b_1 = np.zero((2,1))
W_2 = np.random.randn((1,2))*0.01
b_2 = 0

第一行代码后面乘一个0.01的作用是在为了防止Z过大,而导致梯度下降得太慢,训练速度太慢。

这里牵扯到几种激活函数了

常见的激活函数有四种,我之前还只知道sigmoid。。

1,sigmoid

2,tanh

3,ReLU(线性整流函数)

4,Leaky RU

在知道这个之前,我一直以为sigmoid是最好用的,之后在看了资料之后才知道tanh其实效果比sigmoid好一点,因为依据他的图像,我们不难发现。他的取值范围在[-1,1],隐藏层的输出限定这之间,可以看成是在0值附近分布,均值为0,有归一的效果,所以作为隐藏层的激活函数的话,tanh比sigmoid好,输出的话,一般还是选sigmoid

但是,这两个函数,任何事都有两面,他们也有不好的时候,那就是在Z过大的时候,这两个函数的函数曲线变得很平稳,导致他们梯度下降的很慢,所以这里又来了后面那两个函数,一个是ReLU,他在Z大于0的 时候,斜率都为1,这样就加快了梯度下降的速度,不过,他的缺点也很明显,他在z小于0时候,斜率恒为0,这是LeakyRU就出来了,他的 另外一部分斜率不为0。

总结,一般分类问题中,我们用sigmoid,不过隐藏层一般用tanh,实际中,一般用后面两个,各有优势,具体用哪个,具体问题具体分析

W,b的初始化和几种激活函数的更多相关文章

  1. easyUI 初始化的两种方式

    easyUI 初始化的两种方式: class方式和js方式: <!DOCTYPE html> <html lang="en"> <head> & ...

  2. 使用GoldenGate初始化的两种方式

    在使用OGG开始增量数据的实时复制之前,一般需要对当前的存量数据进行初始化,如果是同构数据库,则可以使用数据库自带的工具完成,比如Oracle DB中的rman, expdp/impdp等. 其实og ...

  3. js二维数组定义和初始化的三种方法总结

    js二维数组定义和初始化的三种方法总结 方法一:直接定义并且初始化,这种遇到数量少的情况可以用var _TheArray = [["0-1","0-2"],[& ...

  4. 一题多解,ASP.NET Core应用启动初始化的N种方案[下篇]

    [接上篇]"天下大势,分久必合,合久必分",ASP.NET应用通过GenericWebHostService这个承载服务被整合到基于IHostBuilder/IHost的服务承载系 ...

  5. [PyTorch]PyTorch中模型的参数初始化的几种方法(转)

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本文目录 1. xavier初始化 2. kaiming初始化 3. 实际使用中看到的初始化 3.1 ResNeXt,de ...

  6. 【jQuery】初始化的三种方法

    JQ初始化方法实际上有两种,由于美元符号可以定义 jQuery,那么就有三种方法可以进行初始化操作,根据个人习惯来选择吧! 第一种 $(document).ready(function(){ // j ...

  7. java中Map和List初始化的两种方法

    第一种方法(常用方法): //初始化List List<string> list = new ArrayList</string><string>(); list. ...

  8. jQuery页面加载初始化的3种方法

    jQuery 页面加载初始化的方法有3种 ,页面在加载的时候都会执行脚本,应该没什么区别,主要看习惯吧,本人觉得第二种方法最好,比较简洁. 第一种: $(document).ready(functio ...

  9. IOS-UIIamge初始化的几种方法的比较

    一.imageNamed——方法介绍imageNamed:是UIImage的一个类方法,它做的事情比我们看到的要稍微多一些.它的加载流程如 下:1.系统回去检查系统缓存中是否存在该名字的图像,如果存在 ...

随机推荐

  1. TP5在lnmp环境中不能重写的问题

    说到坑,这个问题困扰了我一两天时间,本地可以,线上环境检查了好久. 基本检查的地方有几个了,首先就是nginx下面的重写配置,这个大家在网上都能搜到,至于定义的变量和配置路径,修改一下即可. 还有就是 ...

  2. maven 中央仓库地址 随笔记下了

    Maven 中央仓库地址: 1. http://www.sonatype.org/nexus/ 2. http://mvnrepository.com/ 3. http://repo1.maven.o ...

  3. android 自动更新

    http://blog.csdn.net/zml_2015/article/details/50756703

  4. express框架搭建服务端

    1.管理员权限全局安装express npm i -g express-generator@4 2.创建express项目 express -e projectName 3.进入项目并安装 cd pr ...

  5. Codeforces Round #514 (Div. 2) E. Split the Tree(倍增+贪心)

    https://codeforces.com/contest/1059/problem/E 题意 给出一棵树,每个点都有一个权值,要求你找出最少条链,保证每个点都属于一条链,而且每条链不超过L个点 和 ...

  6. Codeforces Round #516 (Div. 2, by Moscow Team Olympiad) D. Labyrinth(重识搜索)

    https://codeforces.com/contest/1064/problem/D 题意 给你一个有障碍的图,限制你向左向右走的次数,问你可以到达格子的个数 思路 可以定义状态为vi[x][y ...

  7. redis知识积累

    redis 安装包:redis-3.0.6.tar.gz 打开 redis: cd /media/deepl/文档/ubuntutools/redis-3.0.6/src/ ./redis-serve ...

  8. orika实现对象复制

    1.新建maven工程orika-demo,引入orika依赖,其中pom.xml如下 <?xml version="1.0" encoding="UTF-8&qu ...

  9. php Amome框架 层次设计备注

    层次说明: 每一级中函数都是为而且只为  上(高)一层  的文件服务的 最底层: AmemoMySql   基础数据库函数:AmemoConfig  数据库信息配置文件  再高一层: 一个文件对应一个 ...

  10. 第02章:MongoDB安装

    ①下载 https://www.mongodb.com/  下载所需版本的tar.gz ②解压安装 tar -zxvf mongodb-3.2.12.tar.gz mv -r mongodb-3.2. ...