pytorch10->非线性激活sigmoid函数简单应用
·
import torch
import torchvision
from torch import nn
from torch.nn import Sigmoid
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
# 1. 准备数据集和数据加载器
dataset = torchvision.datasets.CIFAR10(
root="./dataset",
train=False,
download=True,
transform=torchvision.transforms.ToTensor()
)
dataloader = DataLoader(dataset, batch_size=64)
# 2. 定义网络 (仅包含 Sigmoid)
class Tudui(nn.Module):
def __init__(self):
super().__init__()
self.sigmoid1 = Sigmoid()
def forward(self, x):
return self.sigmoid1(x)
# 3. 实例化模型并创建 TensorBoard 写入器
tudui = Tudui()
writer = SummaryWriter("logs_sigmoid")
step = 0
for data in dataloader:
imgs, targets = data
# 记录原始图片
writer.add_images("input_original", imgs, step)
# 记录经过 Sigmoid 处理后的图片
output = tudui(imgs)
writer.add_images("output_sigmoid", output, step)
step += 1
writer.close()
print("完成!运行 tensorboard --logdir=logs_sigmoid 查看效果")
1.sigmoid函数:把所有实数收敛到0~1,负数越大越接近零,0收敛到0.5,正数越大越接近一
| Sigmoid | ||
|---|---|---|
| 公式 | 1/(1+e^(-x)) | |
| 输出范围 | 0 ~ 1 | |
| 计算速度 | 慢(有指数运算) | |
| 梯度 | 容易饱和(梯度消失) | |
| 常用场景 | 输出层(表示概率) |
2.import torch
import torchvision
torchvision负责视觉图片方面,主要是数据集准备和常见的数据预处理张量化。
torch主要负责张量的计算
3. transform=torchvision.transforms.ToTensor()
将图片张量化
-
类型转换:
PIL.Image或np.ndarray→torch.Tensor -
数值缩放:像素值从
0~255→0~1(变成浮点数) -
维度重排:形状从
[H, W, C]→[C, H, W] -
C是channel通道数的意思,一般1是一个通道,对应灰度图,3是RGB三通道,对应人的视觉 -
w是宽度,h是高度
4.这道题的思路是,先准备一个cifar10数据集,给他张量化,
再定义一个神经网络土堆,一般这里边会有很多操作,这题只有一个sigmoid操作,
最后把图片用tensorboard显示出来
更多推荐



所有评论(0)