神经网络之模型搭建和参数优化---基于CNN

深度学习(7)——CNN优化之路optimization最优化策略 梯度下降 关于梯度下降上一篇博客说了,细节参考这里:https://blog.youkuaiyun.com/weixin_41761357/article/details/109689613 这里所谓的梯度下降是指所有样本的梯度下降。 假如有x1,x2,x3……xn, N个样本; 每个样本有x11,x12,x13……x1m ,M个特征; 模型有K个参数。 为了衡量预测值和真实值之间的差异,需要损失函数loss<y^,y> ,对于第i个参数 模型对1~N个样本会生成N个预测值,对每个样本都有一个los 阅读详情

模型搭建与参数优化

本文主要是复习pytorch实战计算机视觉的内容,模型采用CNN,数据集是手写体

1.模型搭建

class Model(torch.nn.Module):
    def __init__(self):
        super(Model,self).__init__()
        self.conv1 = torch.nn.Sequential(
            torch.nn.Conv2d(1,64,kernel_size=3,stride=1,padding=1),
            torch.nn.ReLU(),
            torch.nn.Conv2d(64,128,kernel_size=3,stride=1,padding=1),
            torch.nn.ReLU(),
            torch.nn.MaxPool2d(stride=2,kernel_size=2)
        )
        self.fc = torch.nn.Sequential(
            torch.nn.Linear(14*14*128,1024),
            torch.nn.ReLU(),
            torch.nn.Dropout(p=0.5),
            torch.nn.Linear(1024,10)
        )
        
    def forward(self,x):
        x = self.conv1(x) #卷积处理
        x = x.view(-1,14*14*128) # 传入全连接层是必须扁平化处理否则会报错
        x = self.fc(x)
        return x

2.模型训练和参数优化

cost = torch.nn.CrossEntropyLoss()#损失函数采用交叉熵
optimizer = torch.optim.Adam(model.parameters())#参数优化采用Adam优化的是model中所有参数
if Use_gpu:
    model = model.cuda()
n_epochs = 5
for epoch in range(n_epochs):
    running_loss = 0.0
    runing_correct = 0.0
    print("Epoch{}/{}".format(epoch,n_epochs))
    for data in data_loader_train:
        X_train,y_train = data
        if Use_gpu:            
            X_train,y_train = Variable(X_train.cuda()),Variable(y_train.cuda())
        else:
            X_train,y_train = Variable(X_train),Variable(y_train)
        outputs = model(X_train)
        _,pred = torch.max(outputs.data,1) 
        optimizer.zero_grad() #梯度清零
        loss = cost(outputs,y_train) #计算损失值
        loss.backward() #反向传播
        optimizer.step()
        running_loss+=loss.data
        runing_correct += torch.sum(pred==y_train.data)
    testing_correct=0
    for data in data_loader_test:
        X_test,y_test = data
        if Use_gpu:
            X_test,y_test = Variable(X_test.cuda()),Variable(y_test.cuda())
        else:
            X_test,y_test = Variable(X_test),Variable(y_test)
            
        outputs = model(X_test)
        _,pred = torch.max(outputs.data,1)
        testing_correct += torch.sum(pred==y_test.data)
    print("Loss is:{:.4f},Train acc:{:.4f},Test acc:{:.4f}"
          .format(running_loss/len(data_train),
                  100*runing_correct/len(data_train),
                  100*testing_correct/len(data_test)))
   
 输出:
Epoch0/5
Loss is:0.0007,Train acc:98.0000,Test acc:98.0000
Epoch1/5
Loss is:0.0005,Train acc:99.0000,Test acc:98.0000
Epoch2/5
Loss is:0.0003,Train acc:99.0000,Test acc:98.0000
Epoch3/5
Loss is:0.0003,Train acc:99.0000,Test acc:98.0000
Epoch4/5
Loss is:0.0002,Train acc:99.0000,Test acc:98.0000 

3.对测试数据可视化

data_loader_test = torch.utils.data.DatalLoader(dataset=data_test,batch_size=4,shuffle=True)

X_test,y_test = next(iter(data_loader_test))
if Use_gpu:
    X_test = Variable(X_test.cuda())
else:
    X_test = Variable(X_test)
pred = model(X_test)
_,pred = torch.max(pred,1)
print("predict Label is:",[i for i in pred.data])
print("Real Label is:",[i for i in y_test])
img = torchvision.utils.make_grid(X_test)
img = img.cpu.numpy().transpose(1,2,0) #cuda数据类型不能直接转numpy需要先变成cpu
std = [0.5,0.5,0.5]
mean = [0.5,0.5,0.5]
img = img*std + mean
plt.imshow(img)

在这里插入图片描述

致谢

深度学习之pytorch实战计算机视觉

【学习笔记】pytorch实战手写数字识别 搭建简单的卷积神经网络实现手写数字图片识别。 1. torch和torchvision 在Pytorch中有两个核心的包,分别是torch和torchvision。torchvision包主要功能是实现数据的处理、导入和预览等,在处理计算机视觉问题时可以使用torchvision包中的类完成相应工作。导包部分如下: import torch from torchvision import datasets, transforms from torch.autograd import Variable 之后 阅读详情

相关推荐

自定义的卷积神经网络模型CNN,对图片进行分类并使用图片进行测试模型-适合入门,从模型到训练再到测试,开源项目

自定义的卷积神经网络模型CNN,对图片进行分类并使用图片进行测试模型-适合入门,从模型到训练再到测试,开源项目

qq_44757503的博客 5022

RBF神经网络参数的参数优化(进化算法)+Matlab源码

@RBF神经网络参数的参数优化(进化算法)

Duckbub1的博客 1万+

当GO.db安装失败时,生物信息学新手应该知道的5个底层逻辑

本文为生物信息学新手提供了解决GO.db安装失败的5个关键底层逻辑,包括网络连接与镜像源设置、版本兼容性检查、依赖关系管理、SQLite存储机制理解以及调试技巧。特别针对Bioconductor的GO.db包安装问题,详细介绍了如何通过切换国内镜像、管理版本冲突和解决依赖问题来成功安装,帮助用户高效克服常见安装障碍。

weixin_29062823的博客 409

如何将CNN的性能优化十倍

想要机器拥有更强的泛化能力,最便捷的方式就是模仿生物体的行为逻辑、功能构造。 人有远超计算机的泛化能力。 其中,视觉方面,可以通过很简单的方法就可以使计算机拥有和人相同的物体识别能力。

zmm119335的博客 1195

新手必看:5分钟搞定Unitree Go1机器狗Gazebo仿真运动控制(附按键图解)

本文为新手提供了Unitree Go1机器狗在Gazebo仿真环境中实现运动控制的快速指南。通过5分钟极简配置和按键图解,帮助开发者快速掌握宇树科技明星产品的基础操作,包括环境搭建、仿真启动和运动控制技巧,适合零基础用户快速上手。

weixin_42550597的博客 300

数据增强综述及albumentations代码使用

数据增强综述及albumentations使用基于基本图形处理的数据增强 本文涉及到的资料: 1.A survey on Image Data Augmentation for Deep Learning 2.Albumentations: Fast and Flexible Image Augmentations 3.Code 基于基本图形处理的数据增强 1.翻转;2.旋转;3.仿射变换;4.色彩空间(RGB、YUV、CMY、HSV,在图像情感分析中会影响标签。最简单的方法就是只改变一个通道。对比度、直方

qq_41917697的博客 6681

不懂得如何优化CNN图像分类模型?这有一份综合设计指南请供查阅

对于计算机视觉任务而言,图像分类是其中的主要任务之一,比如图像识别、目标检测等,这些任务都涉及到图像分类。而卷积神经网络(CNN)是计算机视觉任务中应用最为广泛且最为成功的网络之一。大多数深度学习研究者首先从CNN入门,上手的第一个项目应该是手写体MNIST数字图像识别,通过该项目能够大致掌握图像分类的基本操作流程,但由于该项目太成熟,按步...

weixin_33915554的博客 1068

AM芯片性能测试

目前车载FM&AM没有明确的国标,因此各家测试项目可能不同,最主要测试标准比较混乱,多是根据具体芯片的规格书以及与芯片厂商协商。信号发生器:R&S SMCV100B音频分析仪:R&S UPV AUDIO AYALYZER DC 250KHZ(AP的也可以)专用USB-I2C控制模块(不同芯片控制模块不同,例如SPI或UART的控制模块)卡农线(针对模拟声道输出,+接左/右声道,-接GND,地可接GND也可悬空)

qflook的博客 903

卷积神经网络优化技巧:提升性能与降低复杂度

1.背景介绍 卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度学习模型,主要应用于图像和视频处理领域。由于其强大的表示能力和优秀的性能,CNN已经成为计算机视觉、自然语言处理和其他领域的核心技术。然而,随着模型规模的逐步扩大,CNN的计算复杂度也随之增加,导致训练和推理过程中的性能问题。为了解决这些问题,研究者们不断地探索各种优化技巧,以提升性能并...

AI天才研究院 1802

从零开始学习PX4源码9(部署px4源码到gitee)

由于PX4-Autopilot托管在github,在没有翻墙的情况下,下载固件无法下载。为了提高下载速度,这里将PX4在github上的仓库以及其子仓库(依赖仓库)都搬移到gitee上了。本教程讲解如何快速部署px4固件到gitee上,实现不需要翻墙快速本地就可以下载PX4固件。暂时没有找到如何批量直接通过修改.gitmodules后,使用什么命令可以直接把所有的一级二级子模块的指向直接正常映射。!!

陌城烟雨 812

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet,在计算机视觉领域,卷积神经网络(Convolutional Neural Network,CNN)已然成为推动众多任务发展的核心力量。从早期简单的图像识别,到如今复杂的目标检测、语义分割、图像生成等任务,CNN 都展现出了卓越的性能。CNN 的发展历程见证了一系列经典模型的诞生,其中 LeNet 作为开山之作,为 CNN 的发展奠定了基础,而 ResNet 则通过创新性的设计,突破了传统神经网络的限制,使得网络能够构建得更深、性能更优。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

初学图像处理——百度笔记

1.感知机神经网络与LeNet卷积神经网络   我们要用计算机模仿神经网络连接关系,让计算机具备感性思维。   首先,需要准备数据,数据量越大越好,要构成特征和标签对。如要识别猫, 就要有大量猫的图片和这个图片是猫的标签,构成特征标签对。    随后,搭建神经网络的网络结构,并通过反向传播,优化连线的权重,直到模型的识别准确率达到要求,得到最优的连线权重,把这个模型保存起来。   最后,用保存的模型,输入从未见过的新数据,它会通过前向传播,输出概率值,概率值最大的一个,就是分类或预测的结果。图 2.1 展

AI小白炼金术师 256

《网络信息制作与发布》实训全流程:从专题策划、网站构建到前端实现与上线发布

本文详细介绍了WEB设计专题网站从策划到发布的全流程。主要内容包括:1.网络专题设计(确定主题、编写策划方案、素材搜集整理);2.网站结构构建(设计二级栏目、绘制布局图);3.艺术设计(配色方案、版式设计);4.网页制作(使用Dreamweaver进行标准化布局);5.信息发布(通过Dreamweaver和CuteFTP上传文件、网站维护与备份)。以"学习WEB设计"专题为例,采用框架结构,包含20余个栏目,使用深灰和蓝色为主色调。文章提供了完整的操作步骤和技术要点,适用于网站开发学习者

深耕计算机专业知识与技术。 1534

卷积神经网络(CNN)的参数优化方法

积神经网络的参数优化方法——调整网络结构是关键!!!你只需不停增加层,直到测试误差不再减少. 著名:本文是从 Michael Nielsen的电子书Neural Network and Deep Learning的深度学习那一章的卷积神经网络的参数优化方法的一些总结和摘录,并不是我自己的结论和做实验所得到的结果。我想Michael的实验结果更有说服力一些。本书在github上有中文翻译的版本,...

866 1万+

[PCIE5.0] 2.2.8.9 Optimized Buffer Flush/Fill (OBFF) Message

这段文字讲解的是 优化的缓冲区清空/填充(OBFF)消息,它是 PCI Express(PCIe)规范中的一个可选功能,用于向设备报告平台中央资源的状态。简单来说,OBFF 主要帮助设备了解当前平台资源(如缓存或内存)的状态,从而优化数据的处理和传输。这章重点内容如下。

系统固件工程师 539

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

卷积神经网络CNN参数优化

目录 一、训练神经网络模型 1、神经网络训练流程 2、前向传播算法 3、反向传播算法 二、卷积神经网络CNN参数优化 1、learning_rate学习速率 2、batch_size批数据大小 3、训练样本要均衡 4、丢弃率 5、网络架构 一、训练神经网络模型 1、神经网络训练流程 变量初始化:通过满足正态分布的随机数来初始化神经网络中的参数是一个常用的方法。 部分...

woniu201411的博客 9932

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

简述基于PyTorch框架的卷积神经网络(Convolutional Neural Network,CNN)

PyTorch框架使得构造和训练神经网络方便了许多,为简述其用法,同时也为说明卷积神经网络的原理,本文举例说明如何基于PyTorch框架构造并训练一个卷积神经网络用于识别手写阿拉伯数字。

XY的博客 8580

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

基于CNN卷积神经网络实现mnist手写数据集识别

CNN理论 CNN结构卷积层卷积运算,填充 步幅 三维数据的运算 多滤波器 批处理 池化层 CNN实现 im2col原理与代码 卷积层与池化层的实现 CNN卷积神经网络的实现 训练CNN

泥签的博客 8556

矩阵及其运算在卷积神经网络(CNN)中的应用与启发

摘要1. 引言1.1 研究背景和意义1.2 报告结构2. 卷积神经网络(CNN)简介2.1 CNN基本原理2.2 CNN的优势和应用领域3. 矩阵在CNN中的应用3.1 图像表示与卷积运算3.2 特征提取与矩阵分解3.3 参数优化与梯度计算3.4 图像生成与矩阵合成4. 矩阵运算在CNN设计与优化中的启发4.1 模型参数组织与计算优化4.2 矩阵分解与特征选择4.3 并行计算与加速技术4.4 矩阵运算与推理硬件的关系5. 实际应用案例5.1 图像分类与目标检测5.2 人脸识别与姿态估计5.3 图像生成与风格

upc_ws云边牧风是文森 6277

卷积神经网络参数优化策略(一)

前言 最近卷积神经网络(CNN)很火热,它在图像分类领域的卓越表现引起了大家的广泛关注。本文总结和摘录了Michael Nielsen的那本Neural Network and Deep Learning一书中关于深度学习一章中关于提高泛化能力的一些概述和实验结果。力争用数据给大家一个关于正则化,增加卷积层/全连接数,弃权技术,拓展训练集等参数优化方法的效果。 提高泛化能力的方法,一般来说,提高泛化能力的方法主要有以下几个: 正则化 增加神经网络层数 使用正确的代价函数 使用好的权重初始化技术 人为拓展训练

变化匿名的博客 6796

【论文解读系列】卷积神经网络(CNN)创新综述

大量数据的可用性和硬件处理单元的改进加速了 CNN 的研究,最近也报道了非常有趣的深度 CNN 架构。2015 年,为了训练深度 CNN,Resnet 引入的残差连接概念变得很有名,并且,后来的大多数网络像 Inception-ResNet,WideResNet,ResNext 等都在使用它。与此类似,一些像 WideResnet、Pyramidal Nets、Xception 这样的架构都引入了多层转换的概念,通过额外的基数和增加的宽度来实现。不同的抽象级别在定义神经网络的鉴别能力方面有着重要的作用。

分享学习期间的笔记心得 2392

卷积神经网络(CNN)中的全连接层(Fully Connected Layer)

特别的,在分类任务中,全连接层的输出结果通过softmax激活函数映射为各个类别的得分或概率,通过比较不同类别的得分或概率,可以实现分类决策。全连接层中的每个连接都对应一个权重参数,由于全连接层的参数数量很大,因此在实际应用中,通常会采用一些方法(如反向传播算法)来优化和学习这些参数。卷积神经网络(CNN)中的全连接层(Fully Connected Layer,FC层)是神经网络的一种基本层结构,通常位于CNN的尾部,用于对前面卷积层和池化层提取的特征进行全局分析和决策。图3 全连接层中的部分特征。

搏博的专栏 1万+

卷积神经网络(CNN)超详细介绍

文章转自:https://blog.youkuaiyun.com/jiaoyangwm/article/details/80011656 文章目录 1、卷积神经网络的概念2、 发展过程3、如何利用CNN实现图像识别的任务4、CNN的特征5、CNN的求解6、卷积神经网络注意事项7、CNN发展综合介绍8、LeNet-5结构分析9、AlexNet10、ZFNet10.1 意义10.2 实现方法10.3 训练细节10.4 卷积网络可视化10.6 总结 11、VGGNet11.1 结构11.2 网络特点:11.3 分

weixin_44021149的博客 6万+

积神经网络(CNN)的参数优化方法

http://www.cnblogs.com/bonelee/p/8528863.html 积神经网络的参数优化方法——调整网络结构是关键!!!你只需不停增加层,直到测试误差不再减少. 积神经网络(CNN)的参数优化方法 from:http://blog.youkuaiyun.com/u010900574/article/details/51992156 著名:本文是...

weixin_30363817的博客 2821
上一篇: 神经网络之基于pytorch的数据预处理
下一篇: 神经网络的基础知识
snow5618
博客等级 码龄9年 141粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值