对ANNs相关论文的阅读及PyTorch代码学习

2024-03-17 06:40

本文主要是介绍对ANNs相关论文的阅读及PyTorch代码学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

摘要

文献阅读

torchvision中数据集的使用

DataLoader的使用

神经网络的基本骨架-nn.Moudle的使用

总结


摘要

本周对文献展开了阅读和理解,针对ANNs的相关内容进行了学习,以及对于PyTorch的基本方法继续上周后的学习内容。

文献阅读

题目:基于人工神经网络算法的大气污染统计预测模型研究进展

作者:屈 坤 王雪松# 张远航

abstract

人工神经网络算法(ANNs)能够对影响大气污染物各变量间的非线性关系进行较好描述,因而在空气质量预 测、重污 染预警工作中得到了广泛的应用。随着算法结构的不断发展,基于 ANNs的大气污染统计预测模型在其预测精准性上得以显著提升。对近年来的相关研究成果进行归纳,从变量的选取与预处 理、算法结构的调整与优化等方面总结提升模型预测性能的主要方法,最终形成构建基于 ANNs的大气污染统计预测模型的方法体系。

论文目的

对近年来基于ANNs的 大 气污染统计预测模型的研究进展进行总结,梳理算法改进与优化的基本思路,为多层 次 预 报 预 警 系 统 的构建提供理论基础。

ANNs模型的组成

  • 输入层(算法输入变量)

  • 输出层(算法输出变量)

  • 隐藏层(Sigmoid函数作为激活函数)

采用多层感知机(MLP)结构,无论如何变化其基本结构组成仍然与MLP相似。

ANNs的重点内容:

对于输入变量进行标准化处理以防止数据数量级不同而加大计算量的问题出现,处理方法有如下几种:

  • 线性转化至[0,1];

  • 线性转化 至[a,b],通常选择区间为[0.1,0.9]或[0.2,0.8];

  • 统计学意义的数据标准化;

  • 通过除以最大值,进行简单标准化。

对输入变量的组合:

  • 降维处 理,以减少变量间共线性的影响、提高预测效率。

  • 进行分类,将分类结果作为一类新的变量加入模 型,使预测 更具针对 性。

输出变量的分解:

对基于ANNs的大气 污染统计预测模型进行训练时,可将所关注污染物 的浓度分解为不同频率的周期性序列与非周期性序 列的加和,并选取其中的周期性序列作为预测模型 的输出变量。常用方法包 括小波分解、经验模态分解(EMD)等。

隐藏层的结构设计:

隐藏层主要设计为单层结构,节点数过少,模型难以把握各数据间复 杂的作用关系;节点数过多,数据本身噪音的影响被 放大,模型易出现过拟合现象,同时增加计算消耗。在确定节点数时通常参考一些与输入层输出层节点数相关的经验公式。

N 为隐藏层节点数;nk为训练数据类别数;R、m 均为经验参数,分别取5~10、0~10;Nin、Nout分 别为输入层、输出层节点数;n为训练总数据量。

各种不同算法的大气污染统计预测模型性能比较

  1. 在NUNNARI中用于比较的算法共8类,包括了ANNs、FNN 算法、广义线性算法、相空间局地预测算法、线性时间序列模型等。对预测结果进行评估,总体上非线性模型的预测结果要好于线性模型。

  2. 在HAJEK中选取用于比对的算法包括前向传播神经网络算法(FFNNs)、时延神经网络算(TDNNs)、径向基神经网络算法(RBF)、 SNR等11类,发现结构更为复杂的RBF与SVR等算法效果要好于结构较为简单的 FFNNs。

  3. 在GONC中共考虑8类算法,包括 ANNS、SVM、 CART、RF、梯度增强机(GBM)、adaboost算法、装袋算法(Bagging)与线性聚合(L-ensemble)。预测结果表明各算法的预测性能间差异不大,CART所得预测结果总体上要好于ANNs与SVM,集成模型所得结果精确度要优于单个模型。

论文结论:

  1. ANNs的预测性能一般优于线性算法,但与其他非线性算法进行比对时并不能够得到明确的结论;

  2. 结构相对复杂的 ANNs预测能力一般强于 结构简单的MLP等;

  3. 集成模型的预测性能一般优于单个模型;

  4. 结合多类参数训练、输入变量预处理与输出变量分解等环节的先进算法可提升基于 ANNs的大气污染统计预测模型的整体性能。

针对于ANNs改进方向:

  1. 完善模型构建的基础内容。

  2. 加强模型构建的体系化。

  3. 进 一 步 提 升 模 型 的 预 测 能 力。

torchvision中数据集的使用

torchvision独立于pytorch,专门用来处理图像,通常用于计算机视觉领域。在pytorch中存在许多数据集给我们使用,通过到官方网站进行下载后,可以对利用这些数据集来完成我们的目的。

其中在torchvision最常用的3个包:

models:提供了很多常用的训练好的网络模型

transforms:提供了一些常用的图像转换处理操作,主要针对Tensor或PIL Image进行操作

datasets:提供了一些常用的图片数据集和加载自己的数据集的常用方法

import  torchvisiontrain_set torchvision.datasets.CIFAR10(root="./dataset",train=True,download=True)test_set = torchvision.datasets.CIFAR10(root="./dataset",train=False,download=True)print(test_set[0])print(test_set.classes)
img,target = test_set[0]
print(target)
print(img)
print(test_set.classes[target])
img.show()

打印后的结果

与transforms的联合使用

import  torchvision
from torch.utils.tensorboard import SummaryWriter
dataset_transform = torchvision.transforms.Compose([   torchvision.transforms.ToTensor()])
train_set=torchvision.datasets.CIFAR10(root="./dataset",train=True,download=True)
test_set = torchvision.datasets.CIFAR10(root="./dataset",train=False,download=True)
writer = SummaryWriter("p10")
for i in range (10):    img ,target = test_set[i]    writer.add_image("test_set", img, i)
writer.close()

DataLoader的使用

DataLoader就是数据加载器,结合了数据集和取样器,并且可以提供多个线程处理数据集。在训练模型时使用到此函数,用来把训练数据分成多个小组,此函数每次抛出一组数据。直至把所有的数据都抛出。就是做一个数据的初始化。

在pytorch中加载数据的顺序一般为先创建一个dataset对象,之后创建一个dataloader对象,最后对dataloader进行循环操作,讲data,lable拿到模型中去训练

import torchvision
from torch.utils.data import DataLoader
test_data = torchvision.datasets.CIFAR10("./daataset", train=False, download=True,transform=torchvision.transforms.ToTensor())#batch_size每次取4个数据集进行打包,
test_loader = DataLoader(dataset=test_data, batch_size=4, shuffle=True, num_workers=0, drop_last=False)
img, target = test_data[0]
print(img.shape)
print(target)
​
​
for data in test_loader:imgs, targets = dataprint(imgs.shape)print(targets)

将数据打包后的输出

在实践中,数据读取经常是训练的性能瓶颈,特别当模型较简单或者计算硬件性能较高时。Pytorch的Dataloader中一个很方便的功能是允许使用多进程来加速数据读取,我们可以通过num_workers来设置使用几个进程读取数据。

神经网络的基本骨架-nn.Moudle的使用

Module是Contains中最常用的模块。

使用nn.Moudle,首先是创建一个类继承nn.Moudle,之后继承nn.Moudle的初始化加上自己的初始化,最后重写forward方法。

import torch
from torch import nn
​
class Tudui(nn.Module):def __init__(self):super().__init__()
​
​def forward(self, input):output = input+1return output
​
tudui = Tudui()
x = torch.tensor(1)
output =  tudui(x)
print(output)

这就是一个简单的神经网络,搭建好骨架后对其进行输入数据

总结

这周是第一次对文献展开阅读,有着许多不熟练的地方,阅读完后对整个文章的理解程度还是不够的,因此需要在阅读过程中加强对其中内容的理解以及重复阅读。除此之外,对于基本方法还需要加强学习,现在的掌握程度是远远不够的。下周计划继续阅读文献以及展开对工程项目的相关技术ASP.net.MVC的学习。

这篇关于对ANNs相关论文的阅读及PyTorch代码学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/818137

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss