【人工智能】一文搞定神经网络卷积层、池化层、全连接层、正则化层的作用, DNN, CNN,FCN, GAN,RNN,LSTM,AE,Transformer,GRU,MLP,ResNet,代表会议和期刊

本篇博客是博主学习神经网络搭建,各种层的学习笔记。如果对博主的其他文章感兴趣,可以看这篇文章【CSDN文章】博客文章索引

一、神经网络设计的流程

    1. 确定神经网络结构:确定网络的类型(例如,前馈网络、循环网络等)、网络的层数、每层的节点数和激活函数。
    1. 编写代码实现:确定深度学习框架(例如,TensorFlow、PyTorch等)来实现神经网络的结构和学习算法。
    1. 构建/导入数据集、数据预处理:这包括对输入数据进行归一化、标准化等处理,以便更好地训练网络。可能包括标准化、归一化、填充缺失值、特征选择等。数据集通常被分为训练集、验证集和测试集。训练集用于训练模型,验证集用于调整模型参数以防止过拟合,测试集用于评估模型的最终性能。
    1. 训练网络:使用适当的优化算法(例如,梯度下降、随机梯度下降、Adam等)、损失函数、学习率,以及其他相关参数来调整网络的权重和偏置,使得网络的预测结果尽可能接近真实结果。
    1. 评估网络:这包括使用验证数据集和测试数据集来评估网络的性能,包括指标准确率、召回率、F1分数等。
    1. 应用网络:应用网络和评估网络有所不同,这一步是将训练好的网络应用到新的数据上,进行预测或分类。

在设计神经网络时,还需要考虑到一些其他因素,例如网络的复杂度、过拟合和欠拟合问题、计算资源的限制等。此外,还有一些工具可以帮助设计和可视化神经网络结构。

博主的研究方向是阵列信号处理,DOA估计。目前需要设计能做DOA的网络,目前想搭建一个学习MUSIC谱峰的网络。更具体点,输入信号是阵列信号协方差矩阵的实部和虚部,输出是MUSIC功率谱。博主的设计如下:

  • 目前Pytorch使用的人数最多,代码集成度高,因此博主最终决定基于Pytorch框架实现所需网络。

  • 网络结构:还没想好

  • 自建数据集,输入特征是阵列输出协方差矩阵的实部和虚部,标签为MUSIC功率谱。一共生成200000数据,训练集占比0.5,验证集占比0.3,测试集占比0.2。

  • 评估网络我们使用RMSE来作为DOA估计的指标。应用网络我们使用swellex96_dataset的真实海试数据集作为测试。

二、各种层级的作用

    1. 输入层:负责数据的接收和预处理,包括去均值、归一化和主成分分析PCA。它是神经网络的第一层,负责接收原始数据,并将其转化为神经网络可以处理的形式。
    1. 卷积层:进行卷积运算,目的是提取特征。卷积层中使用参数共享可以来控制参数的数量,因此用卷积来替代前期的全连接,参数量更少。它通过卷积操作,将输入数据转化为一系列特征图(feature maps)。这些特征图可以捕捉到输入数据中的局部特征,如图像中的边缘、角点等。
    1. 池化层:池化层的作用是降低数据的维度。池化层也称为抽样层,下采样层或欠采样层,它扫描方式和卷积相似,但计算的方式不再是扫描框与被扫描的区域点乘,池化运算方法有以下3种:均值池化、随机池化、最大池化。通过池化操作,可以减少特征图的尺寸,从而减少网络的计算复杂度。同时,池化操作也可以提高特征的鲁棒性,使得网络对输入的小变化更加稳定。
    1. 归一化层:归一化层的作用是提高模型的稳定性。更细致的作用如下:

在这里插入图片描述

    1. 激活函数层:引入非线性因素,使得神经网络可以拟合复杂的非线性关系,解决线性模型所不能解决的问题。常见的激活函数包括Sigmoid函数、Tanh函数、ReLU函数等。目前最常用的是ReLu函数[ f ( x ) = m a x ( 0 , x ) f(x)=max(0, x) f(x)=max(0,x)]。
    1. 全连接层:全连接层的作用是对数据进行分类。全连接层的每一个节点都和上一层所有的节点相连,从而把之前提取到的特征综合起来,进行最后的决策。
    1. 输出层:输出层负责将处理后的数据转化为所需的输出结果。在分类问题中,输出层通常使用Softmax函数,将网络的输出转化为各个类别的概率。

在实际应用中,我们需要根据具体问题和数据特点选择合适的网络层进行组合和优化,以实现更好的性能和效果。

三、常见的各种网络模型

首先需要了解神经网络的分类:从数据形式来分有连续型和离散型网络;从网络结构来分有前向网络和反馈网络;从学习方式来分可以分为有导师学习网络和无导师学习网络;从应用领域来分有模式识别、自然语言处理(Natural Language Processing,NLP)、图像处理、智能控制等。

模式识别(Pattern Recognition)又叫机器感知或者智能感知,是利用计算机模仿人脑对现实世界各种事物进行描述、分类、判断和识别的过程

在这里插入图片描述

自然语言处理(Natural Language Processing,简称 NLP)是计算机科学、人工智能和语言学领域的一个交叉学科,主要研究如何让计算机能够理解、处理、生成和模拟人类语言的能力。

在这里插入图片描述

在这里插入图片描述

前馈神经网络

前馈神经网络(Feedforward Neural Network)的整个网络信息输入传输中无反馈(循环)。信息从输入层开始输入,每层的神经元接收前一级输入,并输出到下一级,直至输出层。常见的前馈神经网络包括卷积神经网络(CNN)、全连接神经网络(FCN)、生成对抗网络 (GAN)等。

卷积神经网络CNN

卷积神经网络(Convolutional Neural Network, CNN)主要用于处理图像数据,通过卷积层提取图像的局部特征。

全连接神经网络FCN/FCNN

全连接神经网络(Fully Connected Neural Network,FCNN)是一种经典且基础的深度学习模型,由输入输出和全连接层组成。

生成对抗网络GAN

生成对抗网络(Generative Adversarial Networks, GAN)由两个网络组成,一个生成器和一个判别器,然后通过轮流训练判别器 (Discriminator) 和生成器 (Generator) 来相互对抗,进而从复杂概率分布中生成逼真的样本,例如生成图片、文字、语音等。GAN网络的训练过程是一个零和博弈

在这里插入图片描述
在这里插入图片描述

反馈神经网络

反馈神经网络(Feedback Neural Network)的神经元不但可以接收其他神经元的信号,而且可以接收自己的反馈信号。反馈神经网络中的信息传播可以是单向也可以是双向传播。常见的反馈神经网络包括循环神经网络 (RNN)、长短期记忆网络 (LSTM)、Transformer、门控循环单元GRU、Hopfield网络和玻尔兹曼机。

循环神经网络RNN

循环神经网络(Recurrent Neural Network, RNN)。在这种网络中,神经元之间形成了循环,使得网络可以处理序列数据,如文本或时间序列。
在这里插入图片描述

长短期记忆网络LSTM

长短期记忆网络(Long Short-Term Memory, LSTM)是RNN的一种变体,是用来解决RNN在长序列训练过程中的梯度消失和爆炸问题。

在这里插入图片描述

Hopfield网络

Hopfield网络是一种全连接的反馈神经网络,主要用于存储和识别模式。

在这里插入图片描述

自动编码器AE

自动编码器(Autoencoder, AE)是一种无监督学习算法,主要用于数据降维、特征提取和生成。

在这里插入图片描述

Transformer

在这里插入图片描述

门控循环单元GRU

在这里插入图片描述

玻尔兹曼机

在这里插入图片描述

其他神经网络概念

深度神经网络DNN

深度神经网络(Deep Neural Network, DNN)包含两层隐藏层或者更多的网络。

多层感知机MLP

多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层。隐藏层一般是全连接的,因此也可以叫做全连接网络FCN。

残差网络ResNet

在这里插入图片描述

四、代表会议和期刊

盘点一下,人工智能顶刊顶会有哪些?
在这里插入图片描述
在这里插入图片描述

未完待续

end

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是用Pytorch实现LeNet的代码: ```python import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F from torchvision import datasets, transforms # 定义LeNet模型 class LeNet(nn.Module): def __init__(self): super(LeNet, self).__init__() self.conv1 = nn.Conv2d(1, 6, kernel_size=5, padding=2) self.conv2 = nn.Conv2d(6, 16, kernel_size=5) self.fc1 = nn.Linear(16*5*5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): x = F.relu(self.conv1(x)) x = F.max_pool2d(x, kernel_size=2) x = F.relu(self.conv2(x)) x = F.max_pool2d(x, kernel_size=2) x = x.view(-1, 16*5*5) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x # 加载数据集 transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]) train_dataset = datasets.MNIST('./data', train=True, download=True, transform=transform) test_dataset = datasets.MNIST('./data', train=False, download=True, transform=transform) train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True) test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=64, shuffle=True) # 创建模型和优化器 model = LeNet() optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5) # 训练模型 def train(model, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): optimizer.zero_grad() output = model(data) loss = F.cross_entropy(output, target) loss.backward() optimizer.step() if batch_idx % 10 == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) # 测试模型 def test(model, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: output = model(data) test_loss += F.cross_entropy(output, target, reduction='sum').item() pred = output.argmax(dim=1, keepdim=True) correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('Test set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) # 训练和测试模型 for epoch in range(1, 11): train(model, train_loader, optimizer, epoch) test(model, test_loader) ``` 训练过程会输出每个epoch的Loss和测试集上的准确率,最终测试集上的准确率应该在98%~99%之间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

晚安66

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

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

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

打赏作者

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

抵扣说明:

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

余额充值