美文网首页
nn.Linear()和nn.Conv2d()

nn.Linear()和nn.Conv2d()

作者: 就是果味熊 | 来源:发表于2020-07-24 19:22 被阅读0次

    今天看别人代码时,突然忘了nn.Linear()和nn.Conv2d()网络的相关信息,复习一下。
    nn.Linear()用于设置全连接层,输入输出均为二维张量,形状为[batch_size, size],nn.Conv2d()卷积层要求输入输出为四维张量.
    截取部分源码

    class Linear(Module):
        r"""Applies a linear transformation to the incoming data: :math:`y = xA^T + b`
    
        Args:
            in_features: size of each input sample
            out_features: size of each output sample
            bias: If set to ``False``, the layer will not learn an additive bias.
                Default: ``True``
    
        Shape:
            - Input: :math:`(N, *, H_{in})` where :math:`*` means any number of
              additional dimensions and :math:`H_{in} = \text{in\_features}`
            - Output: :math:`(N, *, H_{out})` where all but the last dimension
              are the same shape as the input and :math:`H_{out} = \text{out\_features}`.
        Examples::
    
            >>> m = nn.Linear(20, 30)
            >>> input = torch.randn(128, 20)
            >>> output = m(input)
            >>> print(output.size())
            torch.Size([128, 30])
              """
        def __init__(self, in_features, out_features, bias=True):
            super(Linear, self).__init__()
            self.in_features = in_features
            self.out_features = out_features
            self.weight = Parameter(torch.Tensor(out_features, in_features))
            if bias:
                self.bias = Parameter(torch.Tensor(out_features))
            else:
                self.register_parameter('bias', None)
            self.reset_parameters()
    
    

    in_features 是输入的二维张量的size,比如示例[128,20]中的20,
    out_features 是输出的二维张量的size,比如示例[128,30]中的30,
    最终得到[128,30]的张量.

    nn.Conv2d()
    卷积层参数比Linear多不少,这里只复习in_channels和out_channels
    in_channel: 输入数据的通道数,例RGB图片通道数为3;
    out_channel: 输出数据的通道数,这个根据模型调整;

    class Conv2d(_ConvNd):
    """      
        Args:
                in_channels (int): Number of channels in the input image
                out_channels (int): Number of channels produced by the convolution
                kernel_size (int or tuple): Size of the convolving kernel
                stride (int or tuple, optional): Stride of the convolution. Default: 1
                padding (int or tuple, optional): Zero-padding added to both sides of the input. Default: 0
                padding_mode (string, optional). Accepted values `zeros` and `circular` Default: `zeros`
                dilation (int or tuple, optional): Spacing between kernel elements. Default: 1
                groups (int, optional): Number of blocked connections from input channels to output channels. Default: 1
                bias (bool, optional): If ``True``, adds a learnable bias to the output. Default: ``True``
    """
                def __init__(self, in_channels, out_channels, kernel_size, stride=1,
                     padding=0, dilation=1, groups=1,
                     bias=True, padding_mode='zeros'):
                    kernel_size = _pair(kernel_size)
                    stride = _pair(stride)
                    padding = _pair(padding)
                    dilation = _pair(dilation)
                    super(Conv2d, self).__init__(
                        in_channels, out_channels, kernel_size, stride, padding, dilation,
                        False, _pair(0), groups, bias, padding_mode)
    

    相关文章

      网友评论

          本文标题:nn.Linear()和nn.Conv2d()

          本文链接:https://www.haomeiwen.com/subject/nleslktx.html