pytorch笔记 torchviz

画出pytorch的流程图

1 举例(Sequential中内容未命名)

from torchviz import make_dot
import torch

model = torch.nn.Sequential(
  torch.nn.Linear(8, 16),
  torch.nn.Tanh(),
  torch.nn.Linear(16, 1))

x = torch.randn(1, 8)
y = model(x)


viz_graph=make_dot(y.mean(), params=dict(model.named_parameters()))
viz_graph.view()
# 会在当前目录下保存一个“Digraph.gv.pdf”文件,并在默认浏览器中打开

 此时是因为我们没有给sequential中的module命名,所以0代表第一个module,2代表tanh之后的那个module

2 举例(Sequential+OrderedDict)

from torchviz import make_dot
from collections import OrderedDict
import torch

model = torch.nn.Sequential(OrderedDict([
  ('Linear1',torch.nn.Linear(8, 16)),
  ('Tanh',torch.nn.Tanh()),
  ('Linear2',torch.nn.Linear(16, 1))]))

x = torch.randn(1, 8)
y = model(x)

#make_dot(y.mean(), params=dict(model.named_parameters()))
viz_graph=make_dot(y.mean(), params=dict(model.named_parameters()))
viz_graph.view()
# 会在当前目录下保存一个“Digraph.gv.pdf”文件,并在默认浏览器中打开

 3 举例(Sequential+add Module)

from torchviz import make_dot
from collections import OrderedDict
import torch

model = torch.nn.Sequential()

model.add_module('W0', torch.nn.Linear(8, 16))
model.add_module('tanh', torch.nn.Tanh())
model.add_module('W1', torch.nn.Linear(16, 1))

x = torch.randn(1, 8)
y = model(x)

#make_dot(y.mean(), params=dict(model.named_parameters()))
viz_graph=make_dot(y.mean(), params=dict(model.named_parameters()))
viz_graph.view()
# 会在当前目录下保存一个“Digraph.gv.pdf”文件,并在默认浏览器中打开

4 举例(稍微复杂一点的CNN)

 

from torchviz import make_dot
import torch.nn as nn
import torch


class CNN(nn.Module):
    def __init__(self):
        super(CNN,self).__init__()
 
        self.conv1=nn.Sequential(
            nn.Conv2d(
                in_channels=1,#输入shape (1,28,28)
                out_channels=16,#输出shape(16,28,28),16也是卷积核的数量
                kernel_size=5,
                stride=1,
                padding=2),
#如果想要conv2d出来的图片长宽没有变化,那么当stride=1的时候,padding=(kernel_size-1)/2
            nn.ReLU(),
            nn.MaxPool2d(kernel_size=2)#在2*2空间里面下采样,输出shape(16,14,14)
        )
           
        self.conv2=nn.Sequential(
            nn.Conv2d(
                in_channels=16,#输入shape (16,14,14)
                out_channels=32,#输出shape(32,14,14)
                kernel_size=5,
                stride=1,
                padding=2),#输出shape(32,7,7),
            nn.ReLU(),
            nn.MaxPool2d(kernel_size=2)
        )
 
        self.fc=nn.Linear(32*7*7,10)#输出一个十维的东西,表示我每个数字可能性的权重
        
    def forward(self,x):
            x=self.conv1(x)
            x=self.conv2(x)
            x=x.view(x.shape[0],-1)
            x=self.fc(x)
            return x
model=CNN()

x = torch.randn(16,1, 28,28)
y = model(x)

#make_dot(y.mean(), params=dict(model.named_parameters()))
viz_graph=make_dot(y.mean(), params=dict(model.named_parameters()))
viz_graph.view()
# 会在当前目录下保存一个“Digraph.gv.pdf”文件,并在默认浏览器中打开

 

### PyTorch 学习笔记与教程 对于希望深入理解并掌握 PyTorch 的学习者而言,存在多种资源可以利用。一个被广泛认可的学习平台提供了详尽的内容覆盖,从人工智能的基础知识一直到高级主题如深度学习神经网络的应用实践[^2]。 该网站不仅适合初学者入门,也为有一定经验的研究人员提供有价值的参考资料。通过这个平台,用户可以获得关于如何安装配置 PyTorch 环境的具体指导[^1],这对于刚开始接触此框架的人来说尤为重要。 除了官方文档外,在线社区和博客也是获取实用技巧的好地方。许多开发者会在个人博客上分享自己的项目经验和心得,这些非正式渠道往往能带来意想不到的帮助。例如,有博主整理了一系列 PyTorch 学习笔记,涵盖了模型构建、训练过程优化等多个方面。 为了更好地理解和应用 PyTorch,建议新手先熟悉 Python 编程语言以及 NumPy 库的操作;之后可以通过完成一些简单的练习来加深印象,比如实现经典的 MNIST 手写数字识别任务。随着技能的增长,再逐步挑战更复杂的案例研究。 ```python import torch from torchvision import datasets, transforms transform = transforms.ToTensor() train_dataset = datasets.MNIST(root='./data', train=True, transform=transform, download=True) train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=64, shuffle=True) for images, labels in train_loader: print(images.shape) break ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值