目录
原理
1.卷积层(Convolutional Layer):
2.池化层(Pooling Layer):
3.全连接层(Fully Connected Layer):
实战步骤和详解
1.步骤
2.代码实现
可视化
1.导入matplotlib
2.在训练过程中记录损失和准确率:
3.可视化损失和准确率:
首页 科技周边 人工智能 深入分析Pytorch核心要点,CNN解密!

深入分析Pytorch核心要点,CNN解密!

Jan 04, 2024 pm 07:18 PM
cnn pytorch

哈喽,我是小壮!

初学者对于创建卷积神经网络(CNN)可能不太熟悉,下面我们以一个完整的案例来进行说明。

CNN是一种广泛应用于图像分类、目标检测、图像生成等任务的深度学习模型。它通过卷积层和池化层自动提取图像的特征,并通过全连接层进行分类。这种模型的关键在于利用卷积和池化的操作,有效地捕捉图像中的局部特征,并通过多层网络进行组合,从而实现对图像的高级特征提取和分类。

原理

1.卷积层(Convolutional Layer):

卷积层通过卷积操作来提取输入图像中的特征。这个操作涉及一个可学习的卷积核,它在输入图像上滑动并计算滑动窗口下的点积。这个过程有助于提取局部特征,从而增强网络对平移不变性的感知能力。

公式:

突破Pytorch核心点,CNN !!!

其中,x是输入,w是卷积核,b是偏置。

2.池化层(Pooling Layer):

池化层是一种常用的降维技术,其作用是减小数据的空间维度,从而降低计算量,并提取出最显著的特征。其中,最大池化是一种常见的池化方式,它会在每个窗口中选择最大的值作为代表。通过最大池化,我们可以在保留重要信息的同时,减少数据的复杂度,提高模型的计算效率。

公式(最大池化):

突破Pytorch核心点,CNN !!!

3.全连接层(Fully Connected Layer):

全连接层在神经网络中扮演着重要的角色,它将卷积和池化层提取的特征映射连接到输出类别。全连接层的每个神经元都与前一层的所有神经元相连,这样可以实现特征的综合和分类。

实战步骤和详解

1.步骤

  • 导入必要的库和模块。
  • 定义网络结构:使用nn.Module定义一个继承自它的自定义神经网络类,定义卷积层、激活函数、池化层和全连接层。
  • 定义损失函数和优化器。
  • 加载和预处理数据。
  • 训练网络:使用训练数据迭代训练网络参数。
  • 测试网络:使用测试数据评估模型性能。

2.代码实现

import torchimport torch.nn as nnimport torch.optim as optimfrom torchvision import datasets, transforms# 定义卷积神经网络类class SimpleCNN(nn.Module):def __init__(self):super(SimpleCNN, self).__init__()# 卷积层1self.conv1 = nn.Conv2d(in_channels=1, out_channels=16, kernel_size=3, stride=1, padding=1)self.relu = nn.ReLU()self.pool = nn.MaxPool2d(kernel_size=2, stride=2)# 卷积层2self.conv2 = nn.Conv2d(in_channels=16, out_channels=32, kernel_size=3, stride=1, padding=1)# 全连接层self.fc1 = nn.Linear(32 * 7 * 7, 10)# 输入大小根据数据调整def forward(self, x):x = self.conv1(x)x = self.relu(x)x = self.pool(x)x = self.conv2(x)x = self.relu(x)x = self.pool(x)x = x.view(-1, 32 * 7 * 7)x = self.fc1(x)return x# 定义损失函数和优化器net = SimpleCNN()criterion = nn.CrossEntropyLoss()optimizer = optim.Adam(net.parameters(), lr=0.001)# 加载和预处理数据transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=64, shuffle=True)# 训练网络num_epochs = 5for epoch in range(num_epochs):for i, (images, labels) in enumerate(train_loader):optimizer.zero_grad()outputs = net(images)loss = criterion(outputs, labels)loss.backward()optimizer.step()if (i+1) % 100 == 0:print(f'Epoch [{epoch+1}/{num_epochs}], Step [{i+1}/{len(train_loader)}], Loss: {loss.item()}')# 测试网络net.eval()with torch.no_grad():correct = 0total = 0for images, labels in test_loader:outputs = net(images)_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()accuracy = correct / totalprint('Accuracy on the test set: {}%'.format(100 * accuracy))
登录后复制

这个示例展示了一个简单的CNN模型,使用MNIST数据集进行训练和测试。

接下来,咱们添加可视化步骤,更直观地了解模型的性能和训练过程。

可视化

1.导入matplotlib

import matplotlib.pyplot as plt
登录后复制

2.在训练过程中记录损失和准确率:

在训练循环中,记录每个epoch的损失和准确率。

# 在训练循环中添加以下代码train_loss_list = []accuracy_list = []for epoch in range(num_epochs):running_loss = 0.0correct = 0total = 0for i, (images, labels) in enumerate(train_loader):optimizer.zero_grad()outputs = net(images)loss = criterion(outputs, labels)loss.backward()optimizer.step()running_loss += loss.item()_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()if (i+1) % 100 == 0:print(f'Epoch [{epoch+1}/{num_epochs}], Step [{i+1}/{len(train_loader)}], Loss: {loss.item()}')epoch_loss = running_loss / len(train_loader)accuracy = correct / totaltrain_loss_list.append(epoch_loss)accuracy_list.append(accuracy)
登录后复制

3.可视化损失和准确率:

# 在训练循环后,添加以下代码plt.figure(figsize=(12, 4))# 可视化损失plt.subplot(1, 2, 1)plt.plot(range(1, num_epochs + 1), train_loss_list, label='Training Loss')plt.title('Training Loss')plt.xlabel('Epochs')plt.ylabel('Loss')plt.legend()# 可视化准确率plt.subplot(1, 2, 2)plt.plot(range(1, num_epochs + 1), accuracy_list, label='Accuracy')plt.title('Accuracy')plt.xlabel('Epochs')plt.ylabel('Accuracy')plt.legend()plt.tight_layout()plt.show()
登录后复制

这样,咱们就可以在训练过程结束后看到训练损失和准确率的变化。

导入代码后,大家可以根据需要调整可视化的内容和格式。

以上是深入分析Pytorch核心要点,CNN解密!的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

科大讯飞:华为升腾 910B 能力基本可对标英伟达 A100,正合力打造我国通用人工智能新底座 科大讯飞:华为升腾 910B 能力基本可对标英伟达 A100,正合力打造我国通用人工智能新底座 Oct 22, 2023 pm 06:13 PM

本站10月22日消息,今年第三季度,科大讯飞实现净利润2579万元,同比下降81.86%;前三季度净利润9936万元,同比下降76.36%。科大讯飞副总裁江涛在Q3业绩说明会上透露,讯飞已于2023年初与华为升腾启动专项攻关,与华为联合研发高性能算子库,合力打造我国通用人工智能新底座,让国产大模型架构在自主创新的软硬件基础之上。他指出,目前华为升腾910B能力已经基本做到可对标英伟达A100。在即将举行的科大讯飞1024全球开发者节上,讯飞和华为在人工智能算力底座上将有进一步联合发布。他还提到,

自然语言生成任务中的五种采样方法介绍和Pytorch代码实现 自然语言生成任务中的五种采样方法介绍和Pytorch代码实现 Feb 20, 2024 am 08:50 AM

在自然语言生成任务中,采样方法是从生成模型中获得文本输出的一种技术。这篇文章将讨论5种常用方法,并使用PyTorch进行实现。1、GreedyDecoding在贪婪解码中,生成模型根据输入序列逐个时间步地预测输出序列的单词。在每个时间步,模型会计算每个单词的条件概率分布,然后选择具有最高条件概率的单词作为当前时间步的输出。这个单词成为下一个时间步的输入,生成过程会持续直到满足某种终止条件,比如生成了指定长度的序列或者生成了特殊的结束标记。GreedyDecoding的特点是每次选择当前条件概率最

PyCharm与PyTorch完美结合:安装配置步骤详解 PyCharm与PyTorch完美结合:安装配置步骤详解 Feb 21, 2024 pm 12:00 PM

PyCharm是一款强大的集成开发环境(IDE),而PyTorch是深度学习领域备受欢迎的开源框架。在机器学习和深度学习领域,使用PyCharm和PyTorch进行开发可以极大地提高开发效率和代码质量。本文将详细介绍如何在PyCharm中安装配置PyTorch,并附上具体的代码示例,帮助读者更好地利用这两者的强大功能。第一步:安装PyCharm和Python

用PyTorch实现噪声去除扩散模型 用PyTorch实现噪声去除扩散模型 Jan 14, 2024 pm 10:33 PM

在详细了解去噪扩散概率模型(DDPM)的工作原理之前,我们先来了解一下生成式人工智能的一些发展情况,这也是DDPM的基础研究之一。 VAEVAE使用编码器、概率潜在空间和解码器。在训练过程中,编码器预测每个图像的均值和方差,并从高斯分布中对这些值进行采样。采样的结果传递到解码器中,解码器将输入图像转换为与输出图像相似的形式。 KL散度用于计算损失。 VAE的一个显着优势是其能够生成多样化的图像。在采样阶段,可以直接从高斯分布中采样,并通过解码器生成新的图像。 GAN在变分自编码器(VAEs)的短短一年之

安装PyTorch的PyCharm教程 安装PyTorch的PyCharm教程 Feb 24, 2024 am 10:09 AM

PyTorch作为一款功能强大的深度学习框架,被广泛应用于各类机器学习项目中。PyCharm作为一款强大的Python集成开发环境,在实现深度学习任务时也能提供很好的支持。本文将详细介绍如何在PyCharm中安装PyTorch,并提供具体的代码示例,帮助读者快速上手使用PyTorch进行深度学习任务。第一步:安装PyCharm首先,我们需要确保已经在计算机上

使用PHP和PyTorch进行深度学习 使用PHP和PyTorch进行深度学习 Jun 19, 2023 pm 02:43 PM

深度学习是人工智能领域的一个重要分支,近年来受到了越来越多人的关注和重视。为了能够进行深度学习的研究和应用,往往需要使用到一些深度学习框架来帮助实现。在本文中,我们将介绍如何使用PHP和PyTorch进行深度学习。一、什么是PyTorchPyTorch是一个由Facebook开发的开源机器学习框架,它可以帮助我们快速地创建深度学习模型并进行训练。PyTorc

真快!几分钟就把视频语音识别为文本了,不到10行代码 真快!几分钟就把视频语音识别为文本了,不到10行代码 Feb 27, 2024 pm 01:55 PM

大家好,我是风筝两年前,将音视频文件转换为文字内容的需求难以实现,但是如今只需几分钟便可轻松解决。据说一些公司为了获取训练数据,已经对抖音、快手等短视频平台上的视频进行了全面爬取,然后将视频中的音频提取出来转换成文本形式,用作大数据模型的训练语料。如果您需要将视频或音频文件转换为文字,可以尝试今天提供的这个开源解决方案。例如,可以搜索影视节目的对话出现的具体时间点。话不多说,进入正题。Whisper这个方案就是OpenAI开源的Whisper,当然是用Python写的了,只需要简单安装几个包,然

pycharm怎么安装pytorch pycharm怎么安装pytorch Dec 08, 2023 pm 03:05 PM

安装步骤:1、打开PyCharm并创建一个新的Python项目;2、在PyCharm的底部状态栏中,点击“Terminal”图标,打开终端窗口;3、在终端窗口中,使用pip命令安装PyTorch,根据系统和需求,可以选择不同的安装方式;4、安装完成后,即可在PyCharm中编写代码并导入PyTorch库来使用它。

See all articles