七、神经网络-非线性激活
非线性变换的主要目的:引入非线性能力,使模型能够学习复杂的映射关系。如果没有非线性激活,神经网络本质上相当于一个线性变换,无法拟合复杂的数据分布。
以下是使用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()
得到的结果如下所示:


浙公网安备 33010602011771号