Linear深入分析

本文介绍了PyTorch中的线性层(Linear)的使用,通过一个Demo展示了如何创建和应用Linear模块。线性层主要进行矩阵乘法操作,实现输入特征到输出特征的线性变换。在代码中,我们定义了一个Demo类,包含两个输入的线性变换,并给出了运行结果。线性层的权重W和偏置b由模型自动生成,用户可选择是否包含偏置。总结部分强调了Linear在神经网络中的作用及其参数设置。
摘要由CSDN通过智能技术生成

题目

'''
Description: Linear
Autor: 365JHWZGo
Date: 2021-12-15 15:17:55
LastEditors: 365JHWZGo
LastEditTime: 2021-12-15 16:06:23
'''

代码

import torch 
import torch.nn as nn

class Demo(nn.Module):
    def __init__(self,input_size,output_size):
        super(Demo,self).__init__()
        self.input_size = input_size
        self.output_size = output_size
        self.linear = nn.Linear(self.input_size,self.output_size)

    def forward(self,inp,out):
        output1 = self.linear(inp)
        output2 = self.linear(out)
        return output1,output2


if __name__ == '__main__':
    input_size = 4
    output_size =5
    

    demo = Demo(input_size,output_size)
    x = torch.randn(2,4)
    y = torch.randn(3,4)
    out1,out2 = demo(x,y)
    print(out1)
    print(out2)

运行结果

在这里插入图片描述

总结

Linear的作用是进行线性变化,实质上矩阵的乘法
y = W ∗ x + b y = W*x+b y=Wx+b
W是权重,b是偏置

特征Wb
维度(out_features,in_features)(out_features,1)
特征xy
维度(in_features,random_input_size)(out_features,random_input_size)

Linear类中init的定义

class Linear(Module):
	def __init__(self, in_features: int, out_features: int, bias: bool = True,device=None, dtype=None) -> None:
        factory_kwargs = {'device': device, 'dtype': dtype}
        super(Linear, self).__init__()
        self.in_features = in_features
        self.out_features = out_features
        self.weight = Parameter(torch.empty((out_features, in_features), **factory_kwargs))
        if bias:
            self.bias = Parameter(torch.empty(out_features, **factory_kwargs))
        else:
            self.register_parameter('bias', None)
        self.reset_parameters()

从中可以看出Linear是自己创造出W,bias是根据用户是否输入,如果为True,则
self.bias = Parameter(torch.empty(out_features, **factory_kwargs)),否则self.register_parameter('bias', None)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

365JHWZGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值