搭建小实战和Sequential的使用

这篇具有很好参考价值的文章主要介绍了搭建小实战和Sequential的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

搭建小实战和Sequential的使用

模型搭建

以CIFAR 10 model结构为例搭建网络

CIFAR 10 model结构

搭建小实战和Sequential的使用

torch.nn.Flatten是PyTorch中的一个模块,用于将多维的输入张量转换为一维的输出张量。它可以被用作神经网络模型中的一层,用于将输入张量展平后作为全连接层的输入。比如输入张量的形状是 [10, 3, 32, 32],即批大小为 10,通道数为 3,高度和宽度分别为 32。经过 nn.Flatten 模块处理后,输出张量的形状变为 [10, 3072],即批大小为 10,一维展开后的长度为 3072(3 * 32 * 32)。

卷积层中的stridepadding是由卷积的输入输出计算公式得到(dilation默认为1)

搭建小实战和Sequential的使用

import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential


class Baseseq(nn.Module):
    def __init__(self):
        super(Baseseq, self).__init__()
        # 根据卷积的输入输出公式计算padding和stride
        self.conv1 = Conv2d(in_channels=3, out_channels=32, kernel_size=5, stride=1, padding=2)
        self.maxpool1 = MaxPool2d(kernel_size=2)
        self.conv2 = Conv2d(in_channels=32, out_channels=32, kernel_size=5, stride=1, padding=2)
        self.maxpool2 = MaxPool2d(kernel_size=2)
        self.conv3 = Conv2d(in_channels=32, out_channels=64, kernel_size=5, padding=2)
        self.maxpool3 = MaxPool2d(kernel_size=2)
        # 与torch.flatten的作用相同
        self.flatten = Flatten()
        # 展平后为64*4*4=1024,当不知道时可以先返回flatten之后的结果查看展平大小
        self.linear1 = Linear(1024, 64)
        self.linear2 = Linear(64, 10)

    def forward(self, x):
        x = self.conv1(x)
        x = self.maxpool1(x)
        x = self.conv2(x)
        x = self.maxpool2(x)
        x = self.conv3(x)
        x = self.maxpool3(x)
        x = self.flatten(x)
        x = self.linear1(x)
        x = self.linear2(x)
        return x

baseseq = Baseseq()
print(baseseq)

# 对搭建的网络进行验证
input = torch.ones((64, 3, 32, 32))
output = baseseq(input)
print(output.shape)

搭建小实战和Sequential的使用

Sequential

Sequential是一个时序容器。Modules 会以他们传入的顺序被添加到容器中。包含在PyTorch官网中torch.nn模块中的Containers中,在神经网络搭建的过程中如果使用Sequential,代码更简洁。使用Sequential搭建上述模型,并借助Tensorboard显示计算图的详细信息。

import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential
from torch.utils.tensorboard import SummaryWriter


class Baseseq(nn.Module):
    def __init__(self):
        super(Baseseq, self).__init__()
        self.model1 = Sequential(
            Conv2d(in_channels=3, out_channels=32, kernel_size=5, stride=1, padding=2),
            MaxPool2d(kernel_size=2),
            Conv2d(32, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 64, 5, padding=2),
            MaxPool2d(2),
            Flatten(),
            Linear(1024, 64),
            Linear(64, 10)
        )

    def forward(self, x):
        x = self.model1(x)
        return x

baseseq = Baseseq()
print(baseseq)

# 对搭建的网络进行验证
input = torch.ones((64, 3, 32, 32))
output = baseseq(input)
print(output.shape)

writer = SummaryWriter("logs")
writer.add_graph(baseseq, input)
writer.close()

得到的结果和上面的结果相同,同时还为每一步添加了序号

搭建小实战和Sequential的使用

TensorBoard得到的计算图:

搭建小实战和Sequential的使用

对于每一个部分双击可以看到详细的信息:

搭建小实战和Sequential的使用

搭建小实战和Sequential的使用文章来源地址https://www.toymoban.com/news/detail-659209.html

到了这里,关于搭建小实战和Sequential的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【torch.nn.Sequential】序列容器的介绍和使用

    nn.Sequential是一个有序的容器,该类将按照传入构造器的顺序,依次创建相应的函数,并记录在Sequential类对象的数据结构中,同时以神经网络模块为元素的有序字典也可以作为传入参数。 因此,Sequential可以看成是有多个函数运算对象,串联成的神经网络,其返回的是Module类型

    2024年02月04日
    浏览(44)
  • 【机器学习】P14 Tensorflow 使用指南 Dense Sequential Tensorflow 实现

    有关 Tensorflow/CUDA/cuDNN 安装,见博客:https://xu-hongduo.blog.csdn.net/article/details/129927665 上图中包含输入层、隐藏层、输出层; 其中输入层为 layer 0 ,输入到网络中的内容为 x ⃗ vec{x} x ; 其中隐藏层有三层, layer 1 , layer 2 , layer 3 ; 其中输出层为 layer 4 ,输出内容为 a ⃗ [

    2023年04月09日
    浏览(39)
  • RAG实战6-如何在LlamaIndex中使用自己搭建的API

    在搭建一个大模型API服务中,我们介绍了如何使用SWIFT框架搭建一个大模型API服务。在RAG实战1-5中,我们一直使用的是本地加载大模型的方式来调用大模型,本文将介绍如何在LlamaIndex中使用自己搭建的大模型API。 LlamaIndex支持部分厂商的API配置,如OpenAI,但我们想使用的是自

    2024年03月14日
    浏览(57)
  • Python web实战 | 使用 Django 搭建 Web 应用程序 【干货】

    从社交媒体到在线购物,从在线银行到在线医疗, Web 应用程序为人们提供了方便快捷的服务。 Web 应用程序已经成为了人们日常生活中不可或缺的一部分。搭建一个高效、稳定、易用的 Web 应用程序并不是一件容易的事情。本文将介绍如何使用 Django 快速搭建一个强大的 Web

    2024年02月15日
    浏览(47)
  • 【黑马2023大数据实战教程】使用3台虚拟机搭建大数据集群详细步骤

    忘了记录,原视频链接在这:2023新版黑马程序员大数据入门到实战教程,大数据开发必会的Hadoop、Hive,云平台实战项目全套一网打尽 配置大数据集群主机映射时: vim /etc/hosts 回车后 按shift+A 开始键入模式 然后Esc,输入 :wq 保存。 配置ssh免密登录: 每台都执行: ssh-keygen -t

    2023年04月27日
    浏览(45)
  • LLM之RAG实战(一):使用Mistral-7b, LangChain, ChromaDB搭建自己的WEB聊天界面

          如何使用没有被LLM训练过的数据来提高LLM性能?检索增强生成(RAG)是未来的发展方向,下面将解释一下它的含义和实际工作原理。 ​       假设您有自己的数据集,例如来自公司的文本文档。如何让ChatGPT和其他LLM了解它并回答问题?         这可以通过四个步骤

    2024年01月18日
    浏览(49)
  • 打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战

    🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺 💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘 本次实验环境见下表

    2024年02月07日
    浏览(51)
  • 【LangChain】顺序(Sequential)

    基础 【LangChain】LLM 【LangChain】路由(Router) 【LangChain】顺序(Sequential) 我们调用语言模型后的下一步,一般都是对语言模型进行一系列调用。也就是我们想要获取一个调用的输出并将其用作另一个调用的输入。 在本笔记本中,我们将通过一些示例来说明如何使用顺序链来执行此

    2024年02月13日
    浏览(46)
  • JAVA新实战1:使用vscode+gradle+openJDK21搭建java springboot3项目开发环境

            作为一个干了多年的全栈技术工程师,厌倦了使用盗版IDE,近些年开发Java一直使用IntelliJ IDEA进行Springboot后端项目开发,对于IntelliJ IDEA 授权问题,一直花钱买学生类的授权,但经常被屏蔽,无法使用,又不舍得花大钱买企业版,索性不再使用了。决定改用 VsCode+Gr

    2024年02月03日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包