非线性激活:加入一些非线性特征,非线性越多才能训练出符合各种特征的模型
ReLU():
inplace:可以选择就地执行操作。默认值:False
inplace为True时,输入的变量跟输出的变量结果一样,说明输入的变量结果变了。
inplace为False时,输入的变量不变,只改变输出的。
【代码演示1:inplace为True】小于0的部分经过处理后输出为0。
import torch
from torch import nn
from torch.nn import ReLU
input = torch.tensor([[1, -0.5],
[-1, 3.5]])
output = torch.reshape(input, (-1, 1, 2, 2))
# 创建网络
class net(nn.Module):
def __init__(self):
super(net, self).__init__()
self.relu1 = ReLU(inplace=True)
def forward(self, input):
output = self.relu1(input)
return output
# 实例
wang = net()
output = wang(input)
print("输入")
print(input)
print("输出")
print(output)
【代码演示2:inplace为False】
【代码演示:图片】
import torch
import torchvision
from torch import nn
from torch.nn import ReLU, Sigmoid
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
dataset = torchvision.datasets.CIFAR10(root="./dataset", train=False, transform=torchvision.transforms.ToTensor(),
download=True)
# 加载数据集
dataloader = DataLoader(dataset, batch_size=64)
# 创建网络
class net(nn.Module):
def __init__(self):
super(net, self).__init__()
self.sigmoid1 = Sigmoid()
def forward(self, input):
output = self.sigmoid1(input)
return output
wang = net()
writer = SummaryWriter("r10")
i = 0
for data in dataloader:
img, target = data
writer.add_images("输入", img, i)
output = wang(img)
writer.add_images("输出", output, i)
i = i + 1
writer.close()