convnet.py 文件源码

python
阅读 28 收藏 0 点赞 0 评论 0

项目:cav_gcnn 作者: myinxd 项目源码 文件源码
def gen_layers(self):
        """Construct the layers"""

        # Init <TODO>
        pad_in = 'valid'
        self.layers = []
        # input layer
        l_input = (InputLayer,
                   {'shape': (None, self.X_in.shape[1],
                              self.X_in.shape[2],
                              self.X_in.shape[3])})
        self.layers.append(l_input)
        # Conv and pool layers
        rows, cols = self.X_in.shape[2:]
        for i in range(len(self.kernel_size)):
            # conv
            l_conv = (Conv2DLayer,
                      {'num_filters': self.kernel_num[i],
                          'filter_size': self.kernel_size[i],
                          'nonlinearity': lasagne.nonlinearities.rectify,
                          'W': lasagne.init.GlorotUniform(),
                          'pad': pad_in})
            self.layers.append(l_conv)
            rows = rows - self.kernel_size[i] + 1
            cols = cols - self.kernel_size[i] + 1
            # pool
            if self.pool_flag[i]:
                l_pool = (MaxPool2DLayer,
                          {'pool_size': self.pool_size})
                self.layers.append(l_pool)
                rows = rows // 2
                cols = cols // 2
        # dropout
        if not self.dropflag:
            self.droprate = 0
        l_drop = (DropoutLayer, {'p': self.droprate})
        # self.layers.append(l_drop)
        # full connected layer
        num_fc = rows * cols * self.kernel_num[-1]
        l_fc = (DenseLayer,
                {'num_units': num_fc,
                 'nonlinearity': lasagne.nonlinearities.rectify,
                 'W': lasagne.init.GlorotUniform(),
                 'b': lasagne.init.Constant(0.)}
                )
        self.layers.append(l_fc)
        # dense
        if not self.fc_nodes is None:
            for i in range(len(self.fc_nodes)):
                self.layers.append(l_drop)
                l_dense = (DenseLayer, {'num_units': self.fc_nodes[i]})
                self.layers.append(l_dense)
        # output layer
        self.layers.append(l_drop)
        l_out = (DenseLayer,
                 {'name': 'output',
                  'num_units': self.numclass,
                  'nonlinearity': lasagne.nonlinearities.softmax})
        self.layers.append(l_out)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号