pytorch+tensorboard+可视化CNN

发布于:2025-08-11 ⋅ 阅读:(18) ⋅ 点赞:(0)

数据预处理:

transform = transforms.Compose([
    transforms.Resize((224,224)),
    transforms.ToTensor(),
    transforms.Normalize(
        mean=[0.5, 0.5, 0.5],
        std=[0.5, 0.5, 0.5]
    )
])

改变了尺寸、归一化

加载数据集:

fold_path = '../images'
dataset = ImageFolder(fold_path,transform=transform)
dataloader = DataLoader(dataset,batch_size=1)

定义网络结构并实例化

class Net(nn.Module):
    def __init__(self):
        super(Net,self).__init__()
        self.conv1 = nn.Conv2d(3,6,3,1,0)
        self.bn1 = nn.BatchNorm2d(6)
        self.relu1 = nn.ReLU()
        self.pool1 = nn.MaxPool2d(2,2)
        #self.pool2 = nn.AvgPool2d(2,2)
        self.flatten1 = nn.Flatten()
        self.linear = nn.Linear(111*111*6,2)

    def forward(self,x):
        x = self.conv1(x)
        x = self.bn1(x)
        x = self.relu1(x)
        x = self.pool1(x)
        #x = self.pool2(x)
        x = self.flatten1(x)
        x = self.linear(x)
        return x

#实例化网络
net = Net()

效果展示:
output = torch.reshape(output,(-1,3,111,111))
这个地方是池化之后是这样的
池化之前是
output = torch.reshape(output,(-1,3,222,222))

writer = SummaryWriter('../hcy_logs')

cnt = 0
for data in dataloader:
    img,label = data
    print(img.shape)
    output = net(img)
    print(output.shape)
    #writer.add_images('input',img,cnt)
    output = torch.reshape(output,(-1,3,111,111))
    writer.add_images('output',output,cnt)
    cnt += 1

writer.close()

原图:(量变临界点 强推 wyy可听)
量变临界点
原图归一化后效果:
在这里插入图片描述
卷积后效果 卷积核是3*3 stride=1 padding=0
在这里插入图片描述
BN 批量归一化效果:
在这里插入图片描述
relu非线性激活效果:
在这里插入图片描述

最大池化效果
在这里插入图片描述
平均池化效果:
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到