以非线性激活函数nn.ReLU和nn.Sigmoid介绍非线性激活函数的用法
参数inplace表示是否改变原来的值,例如nn.ReLu(input, inplace= Ture) 表示input的值会改变
而nn.ReLu(input, inplace= False) 表示input的值不会改变,可以让output值接收,例如:
output = n.ReLu(input, inplace= False) 此时input为原值,而output接收处理后的值
建议设置inplace = False, 以免丢失原始数据
# 以非线性激活函数nn.ReLU和nn.Sigmoid介绍非线性激活函数的用法
# 参数inplace表示是否改变原来的值,例如nn.ReLu(input, inplace= Ture) 表示input的值会改变
# 而nn.ReLu(input, inplace= False) 表示input的值不会改变,可以让output值接收,例如:
# output = n.ReLu(input, inplace= False) 此时input为原值,而output接收处理后的值
# 建议设置inplace = False, 以免丢失原始数据
import torch.nn as nn
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
class My_class(nn.Module):
def __init__(self):
super(My_class, self).__init__()
self.relu1 = nn.ReLU(inplace=False)
self.sigmoid1 = nn.Sigmoid()
def forward(self, input):
output = self.sigmoid1(input)
return output
writer = SummaryWriter('nn_nonlact')
data_input = torchvision.datasets.CIFAR10('dataset', train=False, transform=torchvision.transforms.ToTensor(),
download=True)
data_loader = DataLoader(data_input, batch_size=64, drop_last=True)
my_nn = My_class()
step = 0
for data in data_loader:
imgs, targets = data
writer.add_images('input', imgs, step)
# 采用sigmoid处理
out_put = my_nn(imgs)
writer.add_images('output', out_put, step)
step += 1
writer.close()