【PyTorch深度学习】 第九讲:CNN基础

Pytorch学习笔记(3)——PyTorch神经网络工具箱+手写数字实战 第三章 PyTorch神经网络工具箱 利用PyTorch的数据结构及自动求导机制可以大大提高我们的开发效率。本章将介绍PyTorch的另一利器:神经网络工具箱。利用这个工具箱,设计一个神经网络就像搭积木一样,可以极大简化我们构建模型的任务。 3.1 神经网络核心组件 神经网络看起来很复杂,节点很多,层数多,参数更多。但核心部分或组件不多,把这些组件确定后,这个神经网络基本就确定了。这些核心组件包括: 1)层:神经网络的基本结构,将输入张量转换为输出张量。 2)模型:层构成的网络。 3)损失函数:参数学习的 阅读详情

1.概念原理

利用卷积核,对数据矩阵进行相乘相加
每个通道对应一个核

2.代码实现

import torch
from torchvision import transforms
from torchvision import datasets
from torch.utils.data import DataLoader
import torch.nn.functional as F
import torch.optim as optim

# prepare dataset

batch_size = 64
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])

train_dataset = datasets.MNIST(root='../dataset/mnist/', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, shuffle=True, batch_size=batch_size)

test_dataset = datasets.MNIST(root='../dataset/mnist/', train=False, download=True, transform=transform)
test_loader = DataLoader(test_dataset, shuffle=False, batch_size=batch_size)


# design model using class
'''
torch.nn.Conv2d
    输入通道
    输出通道
    卷积核大小
    padding填充
    bias偏执
MaxPool2d
    维度
'''

class Net(torch.nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = torch.nn.Conv2d(1, 10, kernel_size=5)
        self.conv2 = torch.nn.Conv2d(10, 20, kernel_size=5)
        self.conv3 = torch.nn.Conv2d(20, 30, kernel_size=3)
        self.pooling = torch.nn.MaxPool2d(2)
        self.l1 = torch.nn.Linear(120, 64)
        self.l2 = torch.nn.Linear(64, 32)
        self.l3 = torch.nn.Linear(32, 10)

    def forward(self, x):
        batch_size = x.size(0)
        x = F.relu(self.pooling(self.conv1(x)))
        x = F.relu(self.pooling(self.conv2(x)))
        x = F.relu((self.conv3(x)))
        x = x.view(batch_size, -1)  # 变化全连接类型输入
        x = self.l1(x)
        x = self.l2(x)
        x = self.l3(x)
        return x


model = Net()

# construct loss and optimizer
criterion = torch.nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)


# training cycle forward, backward, update


def train(epoch):
    running_loss = 0.0
    for batch_idx, data in enumerate(train_loader, 0):
        inputs, target = data
        optimizer.zero_grad()

        outputs = model(inputs)
        loss = criterion(outputs, target)
        loss.backward()
        optimizer.step()

        running_loss += loss.item()
        if batch_idx % 300 == 299:
            print('[%d, %5d] loss: %.3f' % (epoch + 1, batch_idx + 1, running_loss / 300))
            running_loss = 0.0


def test():
    correct = 0
    total = 0
    with torch.no_grad():
        for data in test_loader:
            images, labels = data
            outputs = model(images)
            _, predicted = torch.max(outputs.data, dim=1)
            total += labels.size(0)
            correct += (predicted == labels).sum().item()
    print('accuracy on test set: %d %% ' % (100 * correct / total))


if __name__ == '__main__':
    for epoch in range(10):
        train(epoch)
        test()

3.结果

[1,   300] loss: 1.682
[1,   600] loss: 0.345
[1,   900] loss: 0.225
accuracy on test set: 94 % 
[2,   300] loss: 0.175
[2,   600] loss: 0.136
[2,   900] loss: 0.116
accuracy on test set: 96 % 
[3,   300] loss: 0.107
[3,   600] loss: 0.096
[3,   900] loss: 0.089
accuracy on test set: 97 % 
[4,   300] loss: 0.080
[4,   600] loss: 0.074
[4,   900] loss: 0.075
accuracy on test set: 98 % 
[5,   300] loss: 0.064
[5,   600] loss: 0.066
[5,   900] loss: 0.062
accuracy on test set: 98 % 
[6,   300] loss: 0.058
[6,   600] loss: 0.053
[6,   900] loss: 0.056
accuracy on test set: 98 % 
[7,   300] loss: 0.051
[7,   600] loss: 0.048
[7,   900] loss: 0.050
accuracy on test set: 98 % 
[8,   300] loss: 0.045
[8,   600] loss: 0.043
[8,   900] loss: 0.047
accuracy on test set: 98 % 
[9,   300] loss: 0.039
[9,   600] loss: 0.038
[9,   900] loss: 0.045
accuracy on test set: 98 % 
[10,   300] loss: 0.035
[10,   600] loss: 0.036
[10,   900] loss: 0.041
accuracy on test set: 98 % 


基于IC动态加权的机器学习多因子选股策略:从模型融合到实战回测 在量化投资领域,多因子选股模型通过挖掘市场数据中的有效信号来预测股票收益。其核心原理在于利用统计学与机器学习算法,从海量因子中识别出与未来收益具有稳定相关性的特征。这一技术的核心价值在于将主观投资决策转化为系统化、可重复的客观过程,从而在控制风险的前提下追求超额收益。其典型应用场景包括股票阿尔法策略构建、Smart Beta产品设计以及资产配置中的股票筛选环节。本文聚焦于如何通过信息系数(IC)这一关键指标,动态融合Ridge回归、MLP神经网络和随机森林等多个预测模型,构建一个能够自适应市场风格轮动的选股 阅读详情

相关推荐

保姆级教程:用Python+NumPy手把手模拟光学散射与记忆效应(附代码)

本文提供了一份详细的Python+NumPy教程,手把手教你模拟光学散射与记忆效应。从基础光波建模到散射介质实现,再到菲涅尔衍射和光学记忆效应验证,逐步构建完整的仿真系统。通过附带的代码示例,读者可以快速掌握计算光学仿真的核心技术,为医学成像、物理仿真等领域的研究提供实用工具。

weixin_30172941的博客 324

【小白学习PyTorch教程】十一、基于MNIST数据集训练第一个生成性对抗网络

@Author:Runsen GAN 是使用两个神经网络模型训练的生成模型。一种模型称为生成网络模型,它学习生成新的似是而非的样本。另一个模型被称为判别网络,它学习区分生成的例子和真实的例子。 生成性对抗网络 2014,蒙特利尔大学的Ian Goodfellow和他的朋友发明了生成性对抗网络(GAN)。自它出版以来,有许多它的变体和客观功能来解决它的问题 论文在这里找到. 论文提出了两种模型:生成模型和判别模型。两个模型竞争,以产生真实和假的样本。2016年,Yann LeCun将GANs描述为“过去二十年

微信号:RunsenLiu 2661

原理图分享二(信盈达CorexM4核心板STM32F407VGT6)

这是第二张板子的原理图分享,这也是当时大学里学习的一个板子。 原理图分享二(信盈达CorexM4核心板STM32F407VGT6)

让学习成为一种习惯 6894

《深度学习之pytorch实战计算机视觉》第8章 图像风格迁移实战(代码可跑通)

本章将完成一个有趣的应用:图像风格迁移算法。

csdn_xmj的博客 7717

别再只会插拔了!深入Linux内核,手把手调试USB热插拔中断(以高通平台为例)

本文深入探讨了Linux内核中USB热插拔中断的调试方法,特别针对高通平台提供了详细的实战指南。从硬件基础到内核机制,再到中断调试工具和常见问题排查,帮助开发者系统性地解决USB设备识别问题。通过监控中断状态、分析处理流程和高级调试技巧,提升USB热插拔的稳定性和性能。

weixin_29161785的博客 428

从扇束到平行束:等角重排算法在CT重建中的核心原理与MATLAB实践

本文深入解析了CT图像重建中等角扇束重排算法的核心原理与MATLAB实现。通过将实际采集的扇束投影数据,利用几何映射和两次关键插值,转换为适用于经典滤波反投影算法的平行束数据,打通了高效重建的关键路径。文章结合Shepp-Logan模型仿真,提供了完整的MATLAB代码实践,并分析了源-物距、采样率等关键参数对重建质量的影响。

cnn8visionary的博客 647

pytorch知识一tensor数据声明、类型转换。微调rensnet34的注意点。

1、tensor类型的数据声明: A、 import torch import numpy as np from torch.autograd import Variable running_corrects = 0.0 # 声明一个单一变量3,Tensor默认的tensor类型是(torch.FloaTensor)的简称 a=torch.Tensor([3]) aa=torch.Tenso...

yangdeshun888的博客 1万+

Android车载应用开发与分析(11)- 车载Android应用开发入门指南

将时间回退到2017年我大学刚毕业时,彼时移动互联网就已经开始退潮,各大个培训机构也纷纷停止了Android相关的培训,曾经热火朝天的应用开发从那时起,就开始走向下坡路,小程序以及众多跨平台框架也让市场对Android原生开发的需求逐年降低,市场需求的降低也造就了Android开发的面试变得史无前例的“卷”。 终于我在2019年选择离开了互联网,投身当时还不是非常火热的车载Android领域继续从事Android原生开发。而这一年中国首个外商独资的整车制造项目,“...

linkwj的博客 1万+

微调基于 torchvision 0.3的目标检测模型(pytorch官方教程)

在本教程中,我们将微调在 Penn-Fudan 数据库中对行人检测和分割的已预先训练的 Mask R-CNN 模型。它包含170个图像和345个行人实例,我们 将用它来说明如何在 torchvision 中使用新功 能,以便在自定义数据集上训练实例分割模型。 文章目录1.定义数据集2.为 PennFudan 编写自定义数据集2.1 下载数据集2.2 为数据集编写类3.定义模型3.1 PennFudan 数据集的实例分割模型4.整合4.1 为数据扩充/转换编写辅助函数:4.2 编写执行训练和验证的主要功能5.

进击的扛把子 1817

汽车测试工程师工作准则

希望这份综合的工作规范能帮助你更好地规划职业发展。如果你对某个特定领域,比如自动驾驶测试或智能座舱测试,有进一步的兴趣,我很乐意提供更具体的信息。

qq_40844444的博客 452

SAP 资产主数据屏幕增强:对比字段追加与子屏幕/页签 2 种方案优劣

本文深入对比了SAP资产主数据(AS01/AS03)屏幕增强的两种方案:字段追加与子屏幕/页签。从技术实现、业务适配、系统维护等维度分析各自优劣,提供方案选型决策树和混合方案实践建议,帮助企业在SAP实施中做出最优选择。

weixin_28559803的博客 284

Pytorch与深度学习基础

Pytorch与深度学习基础前言Pytorch介绍导入Pytorch第一章:数据操作第一节:什么是张量?第二节:创建第一个张量第三节:张量的创建方法通过列表来创建自定义张量通过Numpy创建张量通过randn方法创建随机张量通过逻辑运算符构建二元张量一些特殊的张量创建高维张量的创建第四节:张量的属性张量的维度访问张量的属性第五节:改变张量的形状第六节:张量的运算张量之间的运算广播机制一个张量的元素求和一个张量的元素求平均值两个一维张量(向量)的内积(点积)二维张量(矩阵)的运算矩阵的转置矩阵的乘法矩阵的范数

weixin_45414514的博客 1722

STM32CubeMX配置FSMC驱动外部SRAM全流程详解

FSMC(灵活静态存储控制器)是STM32实现高速并行外部存储扩展的核心外设,其本质是将片外SRAM地址空间映射为CPU可直接读写的内存区域。原理上依赖于精确的时序寄存器配置(如BTRx)、GPIO复用功能启用及AHB3总线时钟同步机制,技术价值在于免DMA搬运的零拷贝访问能力与确定性低延迟。典型应用场景包括工业HMI缓存、医疗设备实时数据采集、嵌入式图形加速等对带宽和确定性要求严苛的系统。本文围绕STM32F407ZG平台,结合STM32CubeMX工程化配置、硬件信号完整性设计与HAL库底层映射逻辑,系

weixin_34718952的博客 232

Pytorch 第九回:卷积神经网络——ResNet模型

本次开启深度学习第九回,基于Pytorch的ResNet卷积神经网络模型。这是分享的第四个卷积神经网络模型。该模型是基于解决因网络加深而出现的梯度消失和网络退化而进行设计的。接下来给大家分享具体思路。 本次学习,借助的平台是PyCharm 2024.1.3,python版本3.11 numpy版本是1.26.4,pytorch版本2.0.0+cu118,d2l的版本是1.0.3

zhuwenlong130130的博客 1391

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深度学习图像分类篇--1.卷积神经网络CNN基础

立一个flag,跟着这个教程,做好笔记,好好调包,争取今年进入炼丹期。

wjh19970930的博客 2234

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

pytorch-CNN岩石分类(本地数据)

本文数据来源于第九届泰迪杯数据挖掘挑战赛,需要的好兄弟可以自行去下载哦,也可以下载我处理好了的数据。 文章目录前言一、图片压缩,预处理二、代码部分1.数据准备部分2.模型部分:总结 前言 深度学习的卷积神经网络是一个比较重要的研究方向,关于卷积的一些理论,在我的另外一篇博客 大家可以去了解一下。 一、图片压缩,预处理 把岩石数据分成了7类: 先通过数据处理把图片分成7类,方便我们后续的导入。 图片压缩会造成损失,所以对原图片还是需要进行处理,比如: 很明显,这个地方图片从35M变成了930KB,

m0_50360098的博客 4201

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

从CNN到Transformer:基于PyTorch的遥感影像与无人机数据深度学习方法全解析——覆盖目标检测、语义分割与点云分类

我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。随着小卫星星座的普及,对地观测已具备多次以上的全球覆盖能力,遥感影像也不断被更深入的应用于矿产勘探、精准农业、城市规划、林业测量、军事目标识别和灾害评估。

WangYan2022的博客 681

深度学习基础入门笔记集合

文章目录第一讲 Overview 4/18第二讲 线性模型【穷举】4/19第三讲 梯度下降算法【贪心】4/19第四讲 反向传播【神经网络、弹性】4/20第五讲 用PyTorch实现线性回归 4/21第六讲 逻辑斯蒂回归二分类【logistic regression】 4/22第七讲 处理多维特征的输入 4/23 --5.14第八讲 加载数据集 4/24第九讲 多分类问题第十讲 卷积神经网络CNN基础篇 5/3第十一讲 卷积神经网络高级 5/5第十二讲 循环神经网络RNN基础 5/8第十三讲 循环神经网络进

weixin_43827376的博客 1202

PyTorch 深度学习指南(一)

PyTorch 因其灵活性和易用性而引起了数据科学专业人士和深度学习从业者的关注。本书介绍了深度学习和 PyTorch 的基本构建模块,并展示了如何使用实用的方法解决实际问题。你还将学习到一些现代架构和技术,用于解决一些前沿研究问题。本书提供了各种最先进的深度学习架构(如 ResNet、DenseNet、Inception 和 Seq2Seq)的直觉,而不深入数学。它还展示了如何进行迁移学习,如何利用预计算特征加快迁移学习,以及如何使用嵌入、预训练嵌入、LSTM 和一维卷积进行文本分类。

龙哥盟 1893

【从零开始学pytorch架构】第九课 基础CNN

本文介绍了CNN卷积神经网络的基本操作与实现方法。首先阐述了卷积层的输入输出维度关系,然后给出了PyTorch框架下的CNN实现代码示例:包括随机输入生成、卷积层配置、池化层应用等。详细展示了CNN模型构建过程,包括网络结构定义(Conv2d、MaxPool2d、Linear层)、前向传播实现以及GPU运算迁移。最后提供了模型训练和测试方法,包括损失计算、反向传播优化以及准确率评估。通过完整的代码示例展示了CNN从构建到训练、测试的全流程实现。

m0_65047928的博客 241

arcgis10.8深度学习介绍课程梳理

arcgis10.8深度学习介绍1、课程概况 1、课程概况 听说最近arcgis深度学习很火,那么它有那些优势呢????接下来让我们一起走进ArcGIS深度学习:本系列将从以下几个方面进行逐一介绍: 本文主要是从深度学习的基础概念以及在ArcGIS中如何使用两方面对arcgis10.8深度学习进行介绍,面向GIS分析进行入门学习:文中大部分内容是自己学习过程的一个总结和梳理,如果有不正确的地方会...

GIS哼哈哈的博客 7248

《PyTorch深度学习实践》第九讲多分类问题

3、多分类问题,标签y的类型是LongTensor。比如说0-9分类问题,如果y = torch.LongTensor([3]),对应的one-hot是[0,0,0,1,0,0,0,0,0,0].(这里要注意,如果使用了one-hot,标签y的类型是LongTensor,糖尿病数据集中的target的类型是FloatTensor)(但是标签的one-hot编码是算法完成的,算法的输入仍为原始标签)2、torch.max的返回值有两个,第一个是每一行的最大值是多少,第二个是每一行最大值的下标(索引)是多少。

weixin_45971154的博客 539

pytorch实现人脸识别_我们的新书介绍:《深度学习原理与PyTorch实战》

最近,我们的新书《深度学习原理与PyTorch实战》上市了~这是一本由人民邮电出版社出版的,图灵原创系列图书,这本书定位深度学习入门,讨论了一些经典的深度学习算法,也介绍了一些前沿的进展。科学的发展和普及(在我个人看来)存在着这样的规律:论文会提出大量的idea,而业界和社区会进一步检验这些idea的有效性,经过时间考验的真正有效的精华会沉淀在书本中,进一步的,如果某个idea会对人类社会产生重大...

weixin_39927799的博客 264

Pytorch 第十回:卷积神经网络——DenseNet模型

本次开启深度学习第十回,基于Pytorch的DenseNet卷积神经网络模型。这是分享的第五个卷积神经网络模型。在第九回当中,分享了ResNet模型,该模型解决了梯度消失和网络退化的问题。本回的DenseNet模型在某种程度上来说是ResNet模型的升级版,接下来给大家分享具体思路。 本次学习,借助的平台是PyCharm 2024.1.3,python版本3.11 numpy版本是1.26.4,pytorch版本2.0.0+cu118,d2l的版本是1.0.3

zhuwenlong130130的博客 1758

【动手学深度学习】第九课 具体的卷积神经网络

将pooling层换成MaxPooling,激活函数换成ReLU,结果会发现,损失完全不收敛...然后发现应该是学习率的原因,我们的lr设为了0.9,但开始使用的是sigmoid,梯度变化比较平缓,而ReLU的梯度变化比较大,配合大学习率导致梯度爆炸了。(暂退法,随机失活神经元)来控制全连接层的模型复杂度,因为后面的全连接层参数非常多、输出数量也是LeNet的好几倍,所以使用dropout减轻过拟合。其实,更多的3*3的卷积层要比更少的5*5的效果好,也就是神经网络深但窄的效果更好。

PPofficer的博客 427

PyTorch 深度学习指南(三)

关于深度学习和 PyTorch 还有很多内容。PyTorch 是一个相对较新的框架,在撰写本章时已经一年了。还有很多东西可以学习和探索,祝你学习愉快。一切顺利。onnx.ai/

龙哥盟 1216
上一篇: 【PyTorch深度学习】 第八讲:多分类
下一篇: 【spark on k8s】部署问题
玄月无疆
博客等级 码龄9年 34粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值