当前位置:网站首页>使用toruch.nn搭建最简单的神经网络骨架
使用toruch.nn搭建最简单的神经网络骨架
2022-07-17 07:40:00 【程序小黑】
依旧惯例,分析官方文档:
https://pytorch.org/docs/stable/nn.html#containers
这里主要分析Container类。
可以看到Module类是所有神经网络模块的父类,因此,本文主要研究Module的用法。

当我们需要创建一个神经网络模型时,我们需要继承torch.nn.Module类。并通过构造函数调用父类的构造函数。
父类的构造函数设置了训练的flag值为True。
其中CONV2D是一个二维的卷积算法,主要应用于图像操作。对于CONV2D算法,这里分享一篇博客,讲的很详细:https://blog.csdn.net/qq_34107425/article/details/104117670

而forwards中使用到的CONV1D则是一维的卷积操作。对于rule函数,其官方描述为:

————图片引用自知乎。
一般来说,一维卷积 nn.Conv1d 用于文本数据,只对宽度进行卷积,对高度不卷积。
Conv1d仅对数据的height或者weight进行处理,我个人理解为,Conv1D处理的是线性数据,也就是tensor张量场中的低纬度数据。
而对于RELU函数,则意味着非线性的变换。
relu函数的作用就是增加了神经网络各层之间的非线性关系,否则,如果没有激活函数,层与层之间是简单的线性关系,每层都相当于矩阵相乘,这样怎么能够完成我们需要神经网络完成的复杂任务。
这是一个非线性变换。
当函数的操作和变换不是非线性的,那么才有了智能化的可能性,否则程序的执行过程都是按照系统规定的执行,没有非线性的变化。
神经网络相当于一个处理模块, 将输入数据通过卷积和非线性变换得到了一个输出,作为智能处理的结果。
官方演示文档中给出的forwards函数的作用说明了本神经网络的功能为进行一次1维的卷积后再进行非线性变换,并重复一次该操作。
这里做一个简单的神经网络骨架
from torch import nn
import torch
class network(nn.Module):
def __init__(self):
super().__init__()
def forward(self,input):
output = input + 1
return output
net = network()
x = torch.tensor(1.0)
output = net(x)
print(output)
其中init方法中调用了父类的构造方法,forwards方法则是做了一个对input数据进行一次+1的操作,这里的操作是线性的变换,但他依然是一个神经网络的骨架。
边栏推荐
猜你喜欢
随机推荐
Seaport 以及 ERC-4907 能否成为释放NFT流动性的新途径?| Tokenview
JS学习笔记09-12:原型对象以及Foreach+tostring及回收站
5.1 vulnérabilités et précautions en matière de sécurité
Redis6 new data type - hyperloglog
Do online usdt and usdc want to be short? Take you to find out | tokenview
全志V3s学习记录(13)OV2640的使用
Oi memoirs
微服务与微服务架构
Consul service registration and discovery
Great summary! Finally, someone explained all kinds of SQL join connections clearly
Li Kou 1669 merges two linked list notes
最新一代互联网:WEB 3.0
65、Restful规范
Openfeign service interface call
5g at that time, where will driverless driving go in the future?
Redis的发布和订阅
Redis6 new data type geospatial
Can seaport and erc-4907 become new ways to release NFT liquidity| Tokenview
QT related problems encountered when writing code
OpenCV极坐标转换函数warpPolar的使用









