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()

将图片张量化

  1. 类型转换PIL.Image 或 np.ndarray → torch.Tensor

  2. 数值缩放:像素值从 0~255 → 0~1(变成浮点数)

  3. 维度重排:形状从 [H, W, C] → [C, H, W]

  4. C是channel通道数的意思,一般1是一个通道,对应灰度图,3是RGB三通道,对应人的视觉

  5. w是宽度,h是高度

4.这道题的思路是,先准备一个cifar10数据集,给他张量化,

再定义一个神经网络土堆,一般这里边会有很多操作,这题只有一个sigmoid操作,

最后把图片用tensorboard显示出来

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐