theano学习入门和进阶系列2: MLP示例

上一篇以实现logistic regression为例讲解了theano的基础用法。本篇以MLP的示例进一步讲解theano里更高级的用法,以及一般的模型写法。详情见代码中的注释。

#encoding:GBK  
###########################################
#
# multi-layers perceptron
#
###########################################

import theano
import numpy
import theano.tensor as T
from logistic_sgd import load_data

##########################################################
# 对于模型中的特殊层,一般单独定义一个类,以方便模块化管理和复用
##########################################################
class HiddenLayer(object):
    #每一层的初始化中,在__init__的输入参数中,最重要定义的几个元素是,input,n_in,n_out,initial parameters。部分依赖随机值做初始化的还需要定义rng,以保证全局随机性。
    #每一层初始化后,自身的成员变量里一般会有以下几项:self.input, self.out, self.parameters(a list)
    def __init__(self, 
                 rng, #don't forget this
                 input, 
                 n_in, 
                 n_out, 
                 W=None, 
                 b=None, 
                 activation=None):

         self.input = input

         if W is None: 
             #不了解这样给W赋初始值的规矩,另一份代码中,当activation为sigmoid时,W = 4 * 以下赋值。值得注意的是,如果这里初始值全赋0程序基本不动,必须要非零的初始化方式。此处留疑。
             W_value = numpy.asarray(  
                rng.uniform(  
                    low=-numpy.sqrt(6. / (n_in + n_out)),  
                    high=numpy.sqrt(6. / (n_in + n_out)),  
                    size=(n_in, n_out)  
                ),  
                dtype=theano.config.floatX  
            )
             W = theano.shared(value=W_value, name='W', borrow=True) #don't forget set borrow=True
         self.W = W

         if b is None:
             b_value = numpy.zeros((n_out,), dtype=theano.config.floatX)
             b = theano.shared(value=b_value, name='b', borrow&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值