深度学习基础(三)—— 权值矩阵的初始化
2016-04-26 23:07
525 查看
权值矩阵初始化的方式与激励函数的类型有关:
对于 隐层 i:
tanh 型激励函数
对称区间上的均匀分布:[−6fanin+fanout−−−−−−−−−√,6fanin+fanout−−−−−−−−−√]
sigmoid 型激励函数
对称区间上的均匀分布:[−46fanin+fanout−−−−−−−−−√,46fanin+fanout−−−−−−−−−√]
其中 fanin 为第 i−1 层的神经元的数目,则 fanout 为第 i 层的神经元的数目。
这种权值初始化机制确保你了,在模型训练的初期,信息很容易前向传播(传播的是激励activation)和后向传播(传播的是梯度gradients)。
filter_shape,是长度为 4 的 tuple:
number of filters,
num input feature maps,
filter height,
filter width
Going from logistic regression to MLP
对于 隐层 i:
tanh 型激励函数
对称区间上的均匀分布:[−6fanin+fanout−−−−−−−−−√,6fanin+fanout−−−−−−−−−√]
sigmoid 型激励函数
对称区间上的均匀分布:[−46fanin+fanout−−−−−−−−−√,46fanin+fanout−−−−−−−−−√]
其中 fanin 为第 i−1 层的神经元的数目,则 fanout 为第 i 层的神经元的数目。
这种权值初始化机制确保你了,在模型训练的初期,信息很容易前向传播(传播的是激励activation)和后向传播(传播的是梯度gradients)。
1. 普通全连接层
class HiddenLayer(object): def __init__(self, rng, inpt, n_in, n_out, W=None, b=None, activation=T.tanh): self.inpt = inpt if not W: W_values = np.asarray( rng.uniform( low=-np.sqrt(6/(n_in + n_out)), high=np.sqrt(6/(n_in + n_out)), size=(n_in, n_out) ), dtype=theano.config.floatX ) if activation == T.nnet.sigmoid: W_values *= 4 W = theano.shared(value=W_values, name='W', borrow=True) if not b: b_values = np.asarray(np.zeros(n_out,), dtype=theano.config.floatX) b = theano.shared(value=b, name='b', borrow=True) self.W = W self.b = b
2. 卷积层
Convolutional Neural Networks (LeNet)filter_shape,是长度为 4 的 tuple:
number of filters,
num input feature maps,
filter height,
filter width
fan_in = np.prod(filter_shape[1:]) fan_out = filter_shape[0]*np.prod(filter_shape[2:]) # 把池化层也包括在内; # fan_out = flter_shape[0]*np.prod(filter_shape[2:])//poolsize
References
Understanding the difficulty of training deep feedforward neuralnetworksGoing from logistic regression to MLP
相关文章推荐
- Memcache-Java-Client-Release源码阅读(之四)
- 高级渲染配置
- GIT 分支管理:多人协作
- hibernate4报AnnotationConfiguration过期
- Timus 1336. Problem of Ben Betsalel
- swift面向对象之属性
- Android UI模板设计--慕课
- C++作业4
- java爬虫学习日记2-宽度优先爬虫代码实现
- 射频识别技术漫谈(18)——Mifare Desfire
- 加载大图片
- 半平面交,求解多边形内核
- SQL基本操作 - 新增、查看、更新、删除表中数据
- java 抽象类 抽象方法 abstract
- 用三种循环完成了累加
- 第一讲 计算机工作原理
- Android 通知Notification的两种实现方法
- 注解方式配置SessionFactory的注入
- Shell学习日记
- static函数与普通函数