zoukankan      html  css  js  c++  java
  • PyTorch学习系列(九)——参数_初始化

    from:http://blog.csdn.net/VictoriaW/article/details/72872036

    之前我学习了神经网络中权值初始化的方法

    那么如何在pytorch里实现呢。

    PyTorch提供了多种参数初始化函数:

    注意上面的初始化函数的参数tensor,虽然写的是tensor,但是也可以是Variable类型的。而神经网络的参数类型Parameter是Variable类的子类,所以初始化函数可以直接作用于神经网络参数。

    示例:

    self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3)
    init.xavier_uniform(self.conv1.weight)
    init.constant(self.conv1.bias, 0.1)
    

    上面的语句是对网络的某一层参数进行初始化。如何对整个网络的参数进行初始化定制呢?

     
    def weights_init(m):
        classname=m.__class__.__name__
        if classname.find('Conv') != -1:
            xavier(m.weight.data)
            xavier(m.bias.data)
    net = Net()
    net.apply(weights_init) #apply函数会递归地搜索网络内的所有module并把参数表示的函数应用到所有的module上。   
    

    不建议访问以下划线为前缀的成员,他们是内部的,如果有改变不会通知用户。更推荐的一种方法是检查某个module是否是某种类型:

    def weights_init(m):
        if isinstance(m, nn.Conv2d):
            xavier(m.weight.data)
            xavier(m.bias.data)     
    
  • 相关阅读:
    HDU 2196 Computer
    HDU 1520 Anniversary party
    POJ 1217 FOUR QUARTERS
    POJ 2184 Cow Exhibition
    HDU 2639 Bone Collector II
    POJ 3181 Dollar Dayz
    POJ 1787 Charlie's Change
    POJ 2063 Investment
    HDU 1114 Piggy-Bank
    Lca hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/lindaxin/p/8037561.html
Copyright © 2011-2022 走看看