input > 0时,取原始值;input < 0时,取0
Input:(N, *) N - batch_size
Output:(N, *) N - batch_size
nn.ReLU(inplace:bool=false)
inplace为True, input = -1, ReLU(input, inplace=True) —— input = 0
inplace为False,input = -1, output = ReLU(input, inplace=False) —— input = -1, output = 0
即是否替换原input的值(原位操作)
2、SIGMOID 3、使用Sigmoid后得到的图像原图像
Sigmoid后的图像
4、具体代码import ssl
import torch
import torchvision
from torch import nn
from torch.nn import Sigmoid
from torch.nn import ReLU
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
ssl._create_default_https_context = ssl._create_unverified_context
dataset = torchvision.datasets.CIFAR10("./dataset", train=False, transform=torchvision.transforms.ToTensor(),
download=True)
dataLoader = DataLoader(dataset, batch_size=64)
inputData = torch.tensor([[-2, 1.],
[2., -3]])
inputData = torch.reshape(inputData, (-1, 1, 2, 2))
print(inputData)
class TestRelu(nn.Module):
def __init__(self):
super(TestRelu, self).__init__()
self.relu1 = ReLU()
def forward(self, input):
output = self.relu1(input)
return output
tr = TestRelu()
outputData = tr(inputData)
print(outputData)
class TestSigmoid(nn.Module):
def __init__(self):
super(TestSigmoid, self).__init__()
self.sigmoid1 = Sigmoid()
def forward(self, input):
output = self.sigmoid1(input)
return output
ts = TestSigmoid()
writer = SummaryWriter("logs")
step = 0
for data in dataLoader:
imgs, target = data
writer.add_images("input_image", imgs, step, dataformats="NCHW")
output = ts(imgs)
writer.add_images("output_image", output, step, dataformats="NCHW")
step += 1
writer.close()
二、线性层
1、基础原理
k1 × x1 + b1
k2 × x2 + b2
...
kd × xd + bd
ki 为 权重, bi 为 偏移量
VGG16
使用torch.flatten(图片) 将图片展成一行
2、详细代码import ssl
import torch
import torchvision
from torch import nn
from torch.nn import Linear
from torch.utils.data import DataLoader
ssl._create_default_https_context = ssl._create_unverified_context
dataset = torchvision.datasets.CIFAR10("./dataset", train=False,
transform=torchvision.transforms.ToTensor(), download=True)
dataLoader = DataLoader(dataset, batch_size=64, drop_last=True) # drop_last True 最后一页不足舍弃
class TestLinear(nn.Module):
def __init__(self):
super(TestLinear, self).__init__()
self.linear1 = Linear(196608, 10)
def forward(self, input):
output = self.linear1(input)
return output
tl = TestLinear()
for data in dataLoader:
imgs, target = data
print(imgs.shape)
# output = torch.reshape(imgs, (1, 1, 1, -1)) 将图像展开成一行
output = torch.flatten(imgs) # 将[64, 3, 32, 32] -> 转换为 [1, 1, 1, 196608]
print(output.shape)
output = tl(output)
print(output.shape)



