1.激活函数
(1)作用
引入激活函数是为了增加神经网络模型的非线性。激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中,符合各种非线性曲线,符合各种特征,增强模型的泛化性。
(2)常用激活函数
(3) ReLU,Sigmoid
input(N,*) N 代表batch_size
output(N,*)N 代表batch_size
ReLU(inplace)
参数 inplace=true 运算结果替换input inplace=False input不变,运算结果直接给output,默认为false
2.代码示例
import torch
import torchvision.datasets
from torch import nn
from torch.nn import ReLU, Sigmoid
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
input=torch.tensor([[1,-0.5],
[-1,3]])
input=torch.reshape(input,(-1,1,2,2))
#batch_size=-1即系统自己算batch_size ,channel=1,2*2
print(input.shape)
#构建神经网络
dataset=torchvision.datasets.CIFAR10("dataset",train=False,transform=torchvision.transforms.ToTensor())
dataloader=DataLoader(dataset,batch_size=64)
class Tudui(nn.Module):
def __init__(self) -> None:
super().__init__()
self.relu1=ReLU()
#inplace=true 运算结果替换input inplace=False input不变,运算结果直接给output,默认为false
self.sigmoid1=Sigmoid()
def forward(self,input):
# output=self.relu1(input) #数字形式举例
output=self.sigmoid1(input) #图像形式举例
return output
#类实例化,数字形式举例
tudui=Tudui()
output=tudui(input)
print(output)
#图像形式举例
tu=Tudui()
writer=SummaryWriter("logs_relu")
step=0
for data in dataloader:
imgs,targets=data
writer.add_images("input",imgs,step)
output=tu(imgs)
writer.add_images("output",output,step)
step=step+1
writer.close()