1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| import torch import torchvision from torch import nn from torch.nn import MaxPool2d, Sigmoid, ReLU from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriter
# 引入非线性函数的作用 # 真实世界有些原始数据本身就是线性不可分的,必须要对原始空间进行一定的非线性操作 # 对于回归问题也可以同样运用高数的思维,把回归看成分类问题的无限细分,当极限存在时,分类也就成为了回归问题。
# 定义神经网络操作 class MySigmoid(nn.Module): def __init__(self): super(MySigmoid, self).__init__() # 非线性操作,两种,这里先只演示sigmoid self.sigmoid = Sigmoid() self.relu = ReLU()
def forward(self, input): output = self.sigmoid(input) return output
# 获取数据 dataset = torchvision.datasets.CIFAR10(root="data-CIFAR10", train=False, download=True, transform=torchvision.transforms.ToTensor()) dataLoader = DataLoader(dataset, batch_size=64, shuffle=True)
# 定义变量等 sigmoid = MySigmoid() writer = SummaryWriter("log-sigmoid") step = 0
# 写入,观察非线性结果 for data in dataLoader: img, tag = data # 操作前 writer.add_images("input", img, step) # 非线性操作后 output = sigmoid(img) writer.add_images("output-sigmoid", output, step) step = step + 1
# 关闭写入流 writer.close()
|