Torch7学习(三)——学习神经网络包的用法(1)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

torch7学习(一)——Tensor
Torch7学习(二) —— Torch与Matlab的语法对比
Torch7学习(三)——学习神经网络包的用法(1)
Torch7学习(四)——学习神经网络包的用法(2)
Torch7学习(五)——学习神经网路包的用法(3)
Torch7学习(六)——学习神经网络包的用法(4)——利用optim进行训练
Torch7学习(七)——从neural-style代码中看自定义重载函数的训练方式

总说

torch7框架学习首先还是应该先看最基本的torch包中有什么。在我的前2篇博客torch7学习(一)torch7学习(二) 已经较为详细讲了。接下来要看的是神经网络包nn中的内容。可以说,当学习了神经网络包中的内容后,则能看懂给予torch框架的论文代码了,并且已经具备一定的用该框架书写神经网络的能力。

目的

看完这篇博客后,应该能进行最简单的自动训练方式。(⊙o⊙)…,我这样说感觉自己像是个写书的或是老师。
下面将根据不同模块进行介绍

Overview

首先对整个nn包进行总览。
神经网络是由不同模块组成。Module是抽象类,子类是container,而container又有三个构建神经网络最重要的子类:Sequential, Parallel和Concat,由这三类构成的神经网络中可以包含简单层,即Linear, Mean, Max和Reshape等,也包括卷积层还有激活函数Tanh, ReLU等。这些都会在后面分别介绍。

当然你上面只是说了如何构建神经网络,那么怎么进行训练呢?首先你要有一个损失函数,在就是
Criterion模块。损失函数众多,常用的由MSECriterion, ClassNLLCriterion,第一个就是均方误差MSE,第二个就是分类用的交叉熵。有了损失函数后,那么就要开始用算法进行训练了,训练的方式有很多种,有手动挡自动挡。手动挡就是自己写如何更新权值,这个一般只针对只有简单层的网络,如果有卷积层的话,不太好写。自动挡就是直接调用内部的优化函数包optim来进行训练,当然了,推荐用自动挡啊。

初识Module

这里说的module是啥啊,就是模块啊,你把神经网络看成很多一小块一小块的模块组成的,有的小块是具有参数的,比如Linear或是卷积模块,有些是不带有参数的,比如Max或是Pooling。对于每个小块,总有输入吧,也有输出吧。那么对于那些具有参数的小块,则我们可以计算dLoss_dParams, 注意dLoss_dParams包含了2个,分别是dLoss_dWeight和dLoss_dBias。如果是不具有参数的小块,那么就没有dLoss_dParams了,不过二者都有dLoss_dInput和dLoss_dOutput。这个挺像matcovnet的思想的。如果没明白可以参考这个,Notes on MatConvNet ( I ) — Overview

Module是抽象类,包含了4个主要的函数:
1. forward(input) 根据输入计算该module的输出用的。
2. backward(input, gradOutput) 这里的gradOutput就是就是dLoss_dOutput。有了gradOutput和input就可以进行反向传播。值得注意的是,这里内部会计算dLoss_dParams和dLoss_dInput。一般来说只返回dLoss_dInput。事实上,一般来说我们最终要的是整个网络的权值,但是这个不用我们操心,我们也不用管如何更新。只要调用这个函数,则内部会更新网络权值。
3. zeroGradParameters() 这函数一般用于手动挡自动挡一般用不到。后面会讲解
4. updateParameters(learningRate) 和上面函数一起用于手动挡,后面会讲解。

只有两个成员变量:output, gradInput。

最简单的自动挡(GSD)训练

这个训练很简单啊。不过对数据集有要求。
数据集有两点要求。首先dataset[index]返回第Index个数据。其次就是dataset:size()函数返回整个数据集的example的个数。
example有两个属性。第一个就是data

Torch7学习(四)——学习神经网络用法(2) 总说上篇博客已经初步介绍了Module类。这里将更加仔细的介绍。并且还将介绍Container, Transfer Functions Layers和 Simple Layers模块。Module主要有4个函数。 1. [output]forward(input) 2. [gradInput] backward (input.gradOutput) 以及在后面自动挡训练方式中重载的两个函数 阅读详情

相关推荐

Torch7学习(六)——学习神经网络用法(4)——利用optim进行训练

总说这篇博客是本系列的最后一篇,着重讲如何利用optim进行自动挡训练。-- standard training code -- Here let's train XOR net.require 'torch' require 'cunn' require 'cutorch' require 'nn' require 'optim'-- dataset generate local minibat

Hungryof的专栏 6493

pytorch求导总结(torch.autograd)

详细介绍了pytorch中的求导原理和求导方法

qq_43855428的博客 4925

机器学习开源框架系列:Torch1:简介与安装

Torch是一个基于BSD License的开源的机器学习的框架,早在2002年就发布了Torch的初版。Torch一直聚焦于大规模的机器学习应用,尤其是图像或者视频应用等领域,在超过5万次的下载,在学校和企业中也有着不小的影响力,而Torch7希望能够做到像Matlab那样,为机器学习提供环境。 基本信息 项目 说明 官方网站 http://torch.c...

知行合一 止于至善 3万+

Pytorch笔记(二)

Tensor和autogradTensor 几乎所有的深度学习框架背后的设计核心都是张量和计算图, PyTorch 也不例外。 Tensor 使用Tensor函数新建tensor是最复杂多变的方式,它既可以接收一个list,并根据list的数据新建tensor ,也能根据指定的形状新建tensor,还能传入其他的tensor。除了tensor.size(),还可以利用tensor.shape直接查...

sinat_36197913的博客 536

(Pytorch)简单了解torch.autograd.grad()以及torch.autograd.backward()

这个时候,我们就可以用上grad_outputs,这个东西就会充当dz/dy的作用,那么我门只需要求解dy/dx即可,然后相乘,(dz/dy)*(dy/dx)=dz/dx,就得到了我们最终想要的。看起来平平无奇对不对,但是,计算谁对谁的梯度, 通过这个函数,你可以自由控制啦。然后,我们再说一下其中的参数grad_outputs,其他的比如retain_graph我们就不说了,这个东西我早在其他文章说过,属于必修内容。y和dzdy需要形状相同,这其实本来就一定要啊,对y的导数和y的数量当然是一样的。

qq_43391414的博客 1万+

Pytorch autograd机制() —— torch.autograd.Function 自定义求导/反向传播方式

虽然pytorch可以自动求导,但是有时候一些操作是不可导的,这时候你需要自定义求导方式。也就是所谓的 "Extending torch.autograd"。 Function与Module的差异与应用场景 Function与Module都可以对pytorch进行自定义拓展,使其满足网络的需求,但这两者还是有十分重要的不同: Function一般只定义一个操作,因为其无法保存参数,因此适用于激活函数、pooling等操作;Module是保存了参数,因此适合于定义一层,如线性层,卷积层,也适用于定.

hxxjxw的博客 3755

Pytorch入门(二)神经网络的搭建

本文简要的介绍了如何搭建一个神经网络,以及神经网络中常用到的几种操作方式。总结了输入层、卷积层、池化层、激活层、全连接层等概念与应用。

一个非常Cool的人 3356

PyTorch基础学习:生成随机数(torch.rand()torch.randn()torch.randint()torch.randperm())

🚀PyTorch学习之旅:探索随机数生成🚀 🤔为什么需要随机数?在深度学习中,随机数助力模型初始化,增强泛化能力。😅如何生成?PyTorch提供torch.rand(), torch.randn(), torch.randint(), torch.randperm()等函数,满足各种需求。🎯注意事项?注意随机数分布、范围及随机数种子设置。🎁回顾收获,掌握PyTorch随机数生成,助力深度学习之旅。🤝期待与你共同成长,探索更多PyTorch知识! #PyTorch #随机数生成 #深度学习

创作高质量博文,分享知识,共同进步! 3万+

Torch7学习(五)——学习神经网路用法(3)

总说这篇博客主要是讲对于只有简单层的神经网络,进行手动挡的训练方法。 以及卷积层模块以及criterion模块。例子Simple Layer的Add层。module = nn.Add(inputDim, scalar)y = torch.Tensor(5) mlp = nn.Sequential() mlp:add(nn.Add(5))function gradUpdate(net,x,y,cri

Hungryof的专栏 5555

Torch7学习() —— Torch与Matlab的语法对比

torch与matlab的语法对比,以便更好掌握两门语言。

Hungryof的专栏 1万+

Torch7学习(七)——Neural-Style代码解析

neural style代码解析Torch的框架

Hungryof的专栏 1万+

torch7学习(一)——Tensor

torch7学习(一)——Tensor Torch7学习() —— Torch与Matlab的语法对比 Torch7学习)——学习神经网络用法1Torch7学习(四)——学习神经网络用法(2) Torch7学习(五)——学习神经网路用法(3) Torch7学习(六)——学习神经网络用法(4)——利用optim进行训练

Hungryof的专栏 2万+

Python导入torch的方法

随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容中下载torch遇见的一些问题和解决方法。以上内容都是自已在下载torch时,遇到的一些问题和疑问,希望能给到大家帮助!

weixin_57775672的博客 3万+

Torch7系列教程之Torch深度学习库教程()

Torch7深度学习库教程写在前面的话torch1. Torch数据类型2. 常用的一些操作函数 写在前面的话 torch深度学习库中含有很多实用性很强的数学计算库,括有 torch库 简介:Torch程序库中含多维张量的数据结构,并定义了这些数据的数学运算。 此外,它提供了许多实用函数,可用于有效地序列化张量和任意类型,以及其他有用的实用函数。 1. Torch数据类型 2. 常用的一些...

MobtgZhang的博客 4725

torch.nn.Conv2d() 用法讲解

本文是深度学习框架 pytorch 的API : torch.nn.Conv2d() 函数的用法用法 Conv2d(in_channels, out_channels, kernel_size, stride=1,padding=0, dilation=1, groups=1,bias=True, padding_mode=‘zeros’) 参数 in_channels:输入的...

分享日常的学习,开展的项目,编写的软件,解决的问题等~ 10万+

torch.mean和torch.var的个人能理解,以及通俗理解BatchNorm1d的计算原理

在这篇文章中,介绍了BatchNorm1d的工作原理,介绍了torch.mean和torch.Var的工作原理,并且从可视化的方向,逐个介绍了他们的工作原理。换个方向,从图形的角度,我们可以更加清楚BatchNorm1d是在干什么,理解BatchNorm1d的归一化的目的是什么,有什么作用,能对神经网络起到什么作用。相信这篇文章对你一定有很大帮阻。

不做菜虚困的博客 3861

【环境搭建】MacOS系统M1芯片从零开始安装torch torch-geometric(PyG) torch-sparse torch-scatter步骤详解、配置图神经网络(GNN)训练环境教程

实际上只装PyTorch或者torch不会遇到什么问题,但是torch-geometric、torch-scatter、torch-sparse在M1 chip的Mac上非常难安装。本文旨在便于博主自己以后重装,也希望可以让读者少走弯路、轻松安装成功。

weixin_42273602的博客 3466

PyTorch 笔记(16)— torch.nn.Sequential、torch.nn.Linear、torch.nn.RelU

PyTorch 中的 torch.nn 提供了很多与实现神经网络中的具体功能相关的类,这些类涵盖了深度神经网络模型在搭建和参数优化过程中的常用内容,比如神经网络中的卷积层、池化层、全连接层这类层次构造的方法、防止过拟合的参数归一化方法、Dropout 方法,还有激活函数部分的线性激活函数、非线性激活函数相关的方法,等等。 下面使用 PyTorchtorch.nn 来简化我们之前的代码,开始部分的代码变化不大,如下所示: import torch as t batch_n = 100 input_

wohu1104的专栏 1万+

Torch7深度学习框架实战指南

Torch7是一个以Lua语言编写的开源机器学习库,由R tang等人在2002年发起。由于其高效的性能和灵活性,Torch7被广泛应用于深度学习、计算机视觉、信号处理、序列学习等多个领域。在深度学习领域,神经网络由不同类型的层(或称为模块)组成,每个层都有其特定的功能。Torch7框架提供了丰富的层模块,能够支持复杂网络的构建。常见的网络层括:全连接层(Linear):用于实现输入数据与权重矩阵的线性变换,加上偏置项。

weixin_35189483的博客 730
上一篇: Torch7学习(二) —— Torch与Matlab的语法对比
下一篇: Torch7学习(四)——学习神经网络包的用法(2)
Hungryof
博客等级 码龄12年 776粉丝 130原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值