深度学习(六)——神经网络的基本骨架:nn.Module的使用

深度,学习,神经网络,基本,骨架,nn,module,使用 · 浏览次数 : 65

小编点评

**torch.nn简介** torch.nn 是 PyTorch 2.0 中用于构建神经网络的模块。它包含许多函数,用于构建各种神经网络层,例如卷积层、池化层、激活层等。 **torch.nn中的Containers函数** `Containers` 是 `nn.Module` 的一个抽象模块。它包含了所有用于构建神经网络的模块。 **主要功能:** * `Module`:用于定义神经网络的骨架。 * `forword`:用于对输入数据进行计算。 * `SequentialModule`:用于将多个模块连接在一起。 * `ListModuleDictParameterListParameterDict`:用于存储和访问模型参数。 **构建神经网络:** ```python import torch.nn as nn import torch.nn.functional as F class Model(nn.Module): def __init__(self): super().__init__() self.conv1 = nn.Conv2d(1, 20, 5) self.conv2 = nn.Conv2d(20, 20, 5) def forward(self, x): x = F.relu(self.conv1(x)) return F.relu(self.conv2(x)) ``` **一些小技巧:** * 在写 `__init__` 的 `super` 函数时,可以使用 `pycharm` 的自动补全功能。 * 使用 `SequentialModule` 来将多个模块连接在一起。 * 使用 `forword` 函数对输入数据进行计算。 * 使用 `nn.Module` 的 `forward` 方法来定义神经网络的架构。

正文

一、torch.nn简介

官网地址:

torch.nn — PyTorch 2.0 documentation

1. torch.nn中的函数简介

  • Containers:神经网络的骨架

  • Convolution Layers:卷积层

  • Pooling layers:池化层

  • Padding Layers:Padding

  • Non-linear Activations:非线性激活

  • Normalization Layers:正则化层

还有其他函数,详情可以看官方文档。以上这些函数构成了神经网络的基本操作。

2. torch.nn中Containers函数的介绍

Containers一共有六个模块:

  • Module:对于所有神经网络提供一个基本的骨架,一般定义一个神经网络用如下代码。其中,Model代表模型的名称,nn.Module就是继承了这个类的模板。然后我们先用__init__初始化,其中super(Model,self).__init__()指的是对父类进行初始化,后面的部分是根据自己构建的神经网络个性化定制的。之后我们使用forword函数对输入数据进行计算,也可以这么理解:对于一个神经网络,首先输入数据-->使用forword函数计算数据-->输出数据,这个过程也叫前向传播
import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(1, 20, 5)
        self.conv2 = nn.Conv2d(20, 20, 5)

    def forward(self, x):
        x = F.relu(self.conv1(x))
        return F.relu(self.conv2(x))
  • Sequential

  • ModuleList

  • ModuleDict

  • ParameterList

  • ParameterDict

二、实操nn.Module

1. 构建一个简单的神经网络

  • 一些小技巧:在写__init__super函数时,pycharm点击下面这个按钮就可以自动补全:

  • 下面构建一个很简单的神经网络,具体作用就是把输入数据+1然后返回,之后调用这个神经网络:

from torch import nn
import torch

#构建一个叫Demo的神经网络
class Demo(nn.Module):
    def __init__(self):
        super().__init__()

    def forward(self,input):
        output=input+1  #对输入神经网络的数据+1,然后返回
        return output

#调用神经网络
demo=Demo()
x=torch.tensor(1.0)  #输入神经网络的数据
output=demo(x)
print(output)  #输出神经网络的数据

[Run] tensor(2.)

2. 神经网络运行过程

为了更好地说明上面代码的运行过程,把debug打到第14行的demo=Demo()代码上,并点击Step into My Code

之后一直点击Step into My Code,就可以看到代码的运行过程如下:

  • 在调用demo=Demo()后,首先使用super().__init__()\(nn.Module\)进行初始化

  • 然后设定输入值x,并使用demo(x)将该值传入到forword函数中

  • forword函数将该值进行加一,并返回output

  • 最后将返回的output输出

与深度学习(六)——神经网络的基本骨架:nn.Module的使用相似的内容:

深度学习(六)——神经网络的基本骨架:nn.Module的使用

终于卷到神经网络了 ...(˘̩̩̩ε˘̩ƪ)

动手造轮子自己实现人工智能神经网络(ANN),解决鸢尾花分类问题Golang1.18实现

人工智能神经网络( Artificial Neural Network,又称为ANN)是一种由人工神经元组成的网络结构,神经网络结构是所有机器学习的基本结构,换句话说,无论是深度学习还是强化学习都是基于神经网络结构进行构建。关于人工神经元,请参见:人工智能机器学习底层原理剖析,人造神经元,您一定能看

构建基于深度学习神经网络协同过滤模型(NCF)的视频推荐系统(Python3.10/Tensorflow2.11)

毋庸讳言,和传统架构(BS开发/CS开发)相比,人工智能技术确实有一定的基础门槛,它注定不是大众化,普适化的东西。但也不能否认,人工智能技术也具备像传统架构一样“套路化”的流程,也就是说,我们大可不必自己手动构建基于神经网络的机器学习系统,直接使用深度学习框架反而更加简单,深度学习可以帮助我们自动地从原始数据中提取特征,不需要手动选择和提取特征。

神经网络极简入门

神经网络是深度学习的基础,正是深度学习的兴起,让停滞不前的人工智能再一次的取得飞速的发展。 其实神经网络的理论由来已久,灵感来自仿生智能计算,只是以前限于硬件的计算能力,没有突出的表现,直至谷歌的AlphaGO的出现,才让大家再次看到神经网络相较于传统机器学习的优异表现。 本文主要介绍神经网络中的重

基于神经网络的柯氏音血压计

具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI 前言 虽然血压(BP)的测量现在广泛地由自动无创血压(NIBP)监测设备进行,因为它们不需要熟练的临床医生,也不存在并发症的风险,但其准确性仍存疑。本研究开发了一种新的基于端到端深度学习的算法,该算法直接

Python TensorFlow深度学习回归代码:DNNRegressor

本文介绍基于Python语言中TensorFlow的tf.estimator接口,实现深度学习神经网络回归的具体方法~

聊聊神经网络的基础知识

来自《深度学习入门:基于Python的理论与实现》 张量 Numpy、TensorFlow、Pytorch等框架主要是为了计算张量或是基于张量计算。 标量:0阶张量;12,4,3, 向量:一阶张量;[12,4,3] 矩阵:二阶张量;[ [12,4,3], [11,2,3] ] 多阶张量:多维数组;

算法金 | 读者问了个关于深度学习卷积神经网络(CNN)核心概念的问题

​大侠幸会,在下全网同名[算法金] 0 基础转 AI 上岸,多个算法赛 Top [日更万日,让更多人享受智能乐趣] 读者问了个关于卷积神经网络核心概念的问题,如下, 【问】神经元、权重、激活函数、参数、图片尺寸,卷积层、卷积核,特征图,平均池化,全家平均池化,全连接层、隐藏层,输出层 【完整问题】神

聊聊Transformer和GPT模型

本文基于《生成式人工智能》一书阅读摘要。感兴趣的可以去看看原文。 可以说,Transformer已经成为深度学习和深度神经网络技术进步的最亮眼成果之一。Transformer能够催生出像ChatGPT这样的最新人工智能应用成果。 ## 序列到序列(seq2seq) Transformer能实现的核心

实时的语音降噪神经网络算法

概要 现代基于深度学习的模型在语音增强任务方面取得了显著的性能改进。然而,最先进模型的参数数量往往太大,无法部署在现实世界应用的设备上。为此,我们提出了微小递归U-Net(TRU-Net),这是一种轻量级的在线推理模型,与当前最先进的模型的性能相匹配。TRU-Net的量化版本的大小为362千字节,足