Torch7下搭建卷积神经网络框架

2023-11-08 20:50

本文主要是介绍Torch7下搭建卷积神经网络框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前的博文,如一文读懂卷积神经网络(CNN)多层网络与反向传播算法详解感知机详解卷积神经网络详解等已经比较详细的讲述了神经网络以及卷积神经网络的知识。本篇博文主要讲述在Torch7中神经网络如何建立以及相关的原理(即神经网络包NN的内容),虽然讲述的是神经网络的建立。但是不会涉及太多神经网络的知识,假如你对该领域不是很了解,可以去之前的几篇博文里面充充电。

首先简单的介绍一下Torch7中的神经网络工具包,该包是由不同的模块组合而成。NN包中最底层是一个叫Module的抽象模块,Container是对其功能扩展的子模块,Sequential、Parallel和Concat是继承于Container最重要的三个子模块,所构成的神经网络既可以包括简单层,如Linear、Mean、Max和Reshape等,也可以包括卷基层以及激活函数等。通过这些类可以构成神经网络的架构,但是关于如何训练需要一个性能指标也就是损失函数,在NN中损失函数定义在Criterion模块中,常用的损失函数有MSECriterion (均方根误出)、ClassNLLCriterion (交叉熵)。很自然的,有了性能指标之后我们需要考虑如何优化该性能指标,这儿分为两种,一种是使用Torch7内部的优化函数包Optim来优化(简单,上手快),另一种则是采用迭代法更新权值(该方法一般用于简单的网络,当存在卷积层时,优化困难),推荐使用Optiml来优化。

在了解了NN包的组成模块后,让我们详细的了解一下Module模块。上面我们说到NN有不同的模块组成,这些模块有的有参数,有的无参数,但是都有输入dLoss_dInput和输出dLoss_dOutput(除输入层模块和输出层模块以外);对于那些有参数的模块而言需要计算dLoss_dParams,该参数其实包括两部分,一部分是权值,即dLoss_dWeight,另一部分是偏置,即dLoss_dBias.

在Module中定义了四个基本函数方法,如下所示:

--1. forward(input) 根据输入计算module的输出;

--2. backward(input, gradOutput) 该函数利用反向传播(BP算法原理充电的点这儿脉络清晰的BP神经网络讲解)更行网络内部的权值,其中gradOutput即上述的dLoss_dOutput;

--3. zeroGradParameters() 用于权值迭代更新,用到的概率比较小;

--4. updateGradParameters(learningRate) 用于迭代更新内部权值,后面详细讲解;

下面让我们一起动手尝试如何构建神经网络的架构

在搭建之前先看一下卷积神经网络的架构,如下所示。


1. 首先将Torch7中的nn包导入到工作区(注意语句结束加“;”),这儿使用require关键字,如下所示。


2. 接下来需要申明一个神经网络容器来搭建神经网络,如上所述,目前有三种方式可以定义,第一种Sequential则采用队列方式,一层层的搭建,Concat和Parallel如字面意思那样,如下所示。


在此演示采用的是Sequential子模块,如下所示。


3. 现在有了容器后需要向net容器添加卷积层,输入通道为2,输出通道为8,卷积核大小为6x6,如下所示,


(介绍一下卷积函数:

module = nn.SpatialConvolution(nInputPlane, nOutputPlane, kW, kH, [dW], [dH], [padW], [padH])

参数含义如下:

nInputPlane:输入的通道数

nOutputPlane:输出的通道数

kW x kH:定义卷积核的大小

[dW],[dH:分别为横向和纵向移动的步长,默认值为1

[padW]:宽度维度附加值,默认值为零,使用时推荐设置为(kW-1)/2。在卷积运算的维度不匹配时起作用,这儿不考虑]

[padH]:与padW类似,推荐设置为(kH-1)/2)

4. 然后添加往卷基层添加卷积的操作以及激活函数ReLU,如下所示。


5. 加入新的池化Pooling层,在3x3的区域内寻找最大值作为该区域的值,横向和纵向的查找步长分别为3,如下所示。


(介绍一下池化函数:

module = nn.SpatialMaxPooling(kW, kH, [dW], [dH], [padW], [padH])

参数的定义与卷积函数的定义一致,见上面)

6. 重复上述过程,分别添加卷基层(输入通道为8,输出通道为16,卷积核大小为6x6),激活函数(ReLU),池化层(3x3, 横纵向步长为3),如下所示。


7. 将三维的Tensor转换成一维的Tensor,如下所示。


8. 添加16*6*6=576与200的线性全连接层,如下所示。


9. 添加激活函数,如下所示。


10. 添加200与120的线性全连接层,并添加激活函数,如下所示。


11. 添加120与20的线性全连接层,并采用不softMAX将输出转换成概率,如下所示。


12. 至此含有多个卷基层的卷积神经网络的结构已经搭建完毕,将其打印可以清晰的描述其结构,如下所示。


这样,我们就搭建了一个卷积神经网络的架构,接下来需要考虑的就是如何训练这样一个神经网络,这个问题将在以后给出。

参考文章:

http://blog.csdn.net/u010946556/article/details/51332644

http://blog.csdn.net/hungryof/article/details/52022415

等不一一列出,感谢他们的分享。

往期美文-点击查阅

Torch7深度学习教程1

Torch7基本教程2

一文读懂卷积神经网络(CNN)

EM算法

卷积神经网络详解

模型组合之梯度提升(Gradient Boosting)

初步了解支持向量机(SVM)-1

支持向量机(SVM) (2)

距离和相似性度量在机器学习中的使用统计

特征学习之卷积神经网络

支持向量机(SVM)--3

支持向量机(SVM)--(4)

支持向量机(SVM)之Mercer定理与损失函数----5

支持向量机之SMO-------7

经典机器学习书籍推荐

Python科学计算(书籍推荐)

Python:常用机器学习框架

更多精彩内容可以发送关键字获取或者查看历史文章。

查看往期分类文章请回复关键字:
帮助 | 机器学习 (ML) | 支持向量机 (SVM) | 深度学习 (DL) | Python (py / Py) | AI 动态(AI)

这篇关于Torch7下搭建卷积神经网络框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_28168421/article/details/53470661
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/372450

相关文章

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2