七、神经网络-非线性激活

小土堆视频:https://www.bilibili.com/video/BV1hE411t7RN?spm_id_from=333.788.videopod.episodes&vd_source=6cb513d59bf1f73f86d4225e9803d47b&p=19

非线性变换的主要目的:引入非线性能力,使模型能够学习复杂的映射关系。如果没有非线性激活,神经网络本质上相当于一个线性变换,无法拟合复杂的数据分布。

以下是使用relu/sigmoid的例子:

dataset=torchvision.datasets.CIFAR10(root='./dataset', train=False, download=True,transform=torchvision.transforms.ToTensor())
dataloader=torch.utils.data.DataLoader(dataset,batch_size=64,shuffle=True)

class MM(torch.nn.Module):
    def __init__(self):
        super(MM, self).__init__()
        self.relu1=ReLU()
        self.sigmoid1=torch.nn.Sigmoid()

    def forward(self,x):
        output=self.sigmoid1(x)
        return output


mm=MM()
writer=SummaryWriter(log_dir='./relu_logs')
step=0
for data in dataloader:
    imgs,targets=data
    writer.add_images("input",imgs,step)
    output=mm(imgs)
    writer.add_images("output",output,step)
    step+=1

writer.close()

得到的结果如下所示:
image

posted @ 2025-03-25 22:19  W-Vicky11  阅读(31)  评论(0)    收藏  举报