栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

机器学习、神经网络、深度学习权重初始化方法笔记

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

机器学习、神经网络、深度学习权重初始化方法笔记

1、initialize_parameters_zeros: # 零初始化

核心代码如下:

# 经典机器学习
parameters["W"] = np.zeros((m, n)) # 根据自己的输入数据维度确定权重矩阵维度       


# 深度学习
parameters["W"+str(l)] = np.zeros((layers_dims[l], layers_dims[l-1])) 
parameters["b"+str(l)] = np.zeros((layers_dims[l],1))

优点:结构简单,初始化后的参数全部为零,入门时经常使用;

缺点:迭代计算到最优值的时间较长,深度学习时,输入的X是对称数据的话,学习可能无法打破对称性,不能进行有效的学习。

2、def initialize_parameters_random: # 随机初始化

核心代码如下:

机器学习
parameters['W'] = np.random.randn(m, n) * 10


深度学习
parameters['W' + str(l)] = np.random.randn(layers_dims[l], layers_dims[l - 1]) * 10
parameters['b' + str(l)] = np.zeros((layers_dims[l], 1))

优点:可轻微减少学习时间,在一定程度上可以打破输入数据的对称性,K-mean算法中较好用;

缺点:可能导致初始化的权重过大或过小,深度学习梯度下降过程中导致梯度爆炸或消失,结构较为零活,初学不易掌握。

3、def initialize_parameters_xavier: # 梯度抑制初始化

对于tanh激活函数,核心代码如下:

# 深度学习
parameters['W' + str(l)] = np.random.randn(layers_dims[l], layers_dims[l - 1]) * np.sqrt(1 / layers_dims[l - 1])
parameters['b' + str(l)] = np.zeros((layers_dims[l], 1))

对于Relu激活函数,核心代码如下:

# 深度学习
parameters['W' + str(l)] = np.random.randn(layers_dims[l], layers_dims[l - 1]) * np.sqrt(2 / (layers_dims[l - 1] + layers_dims[l]))
parameters['b' + str(l)] = np.zeros((layers_dims[l], 1))

优点:可以有效抑制梯度爆炸和梯度消失,减少一定的学习时间;

缺点:结构零活多变。

-----------------待续-----------------------

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887150.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号