【简单的Pytorch回归模型案例】CNN去除随机噪声--修复2d高斯分布【pytorch demo】

【深度学习-第6篇】使用python快速实现CNN多变量回归预测(使用pytorch框架) 这一篇我们讲CNN的多变量回归预测。是的,同样是傻瓜式的快速实现。本篇是之前MATLAB快速实现CNN多变量回归预测的姊妹篇。 阅读详情

 

一、这是个Pytorch学习案例,可以根据这个案例写自己的模型

二、代码

1、导入相关模块

import torch 
from torch import nn
import torchvision
import numpy as np
import cv2
%matplotlib inline
import matplotlib.pyplot as plt 
from torch.utils.data import Dataset
import random
import copy
import torch.optim as optim

2、定义网络模型,这是一个回归模型,用于过滤高斯分布的噪声,从而复原分布,这个模型定义的比较简单

class myNet(nn.Module):
    def __init__(self,):
        super(myNet, self).__init__()
        self.conv1=nn.Conv2d(1,3,kernel_size=3,padding=1)
        self.conv2=nn.Conv2d(3,1,kernel_size=3,padding=1)
        self.relu=nn.ReLU(inplace=True)
    def forward(self,x):
        x=self.conv1(x)
        x=self.relu(x)
        x=self.conv2(x)
        
        return x

3、数据生成与测试

class Datagen(Dataset):
    def __init__(self,size=12,transform=None,sigma=3):
        self.size=size
        self.transform=transform
        self.db=[]
        self.sigma=sigma
        for i in range(10):
            x=np.arange(0,self.size,1,np.float32)
            y=x[:,np.newaxis]
            #template=np.zeros((15,15))
            template=np.exp(-((x-random.randint(0,self.size))**2+(y-random.randint(0,self.size))**2)/(2*self.sigma))
            data_noisy = template + 0.2*np.random.normal(size=template.shape)
            #self.db.append([data_noisy,np.exp(-((x-self.size//2)**2+(y-self.size//2)**2)/(2*self.sigma))])
            self.db.append([data_noisy,template[None,:,:]])
            
    def __len__(self,):
        return len(self.db)
    
    def __getitem__(self, idx):
        db_rec = copy.deepcopy(self.db[idx])
        db_rec[0]=self.transform(db_rec[0]).float()
        #data=torch.from_numpy(db_rec)
        
        return db_rec
    
transform=torchvision.transforms.Compose([torchvision.transforms.ToTensor()])
#这是pytorch自带的数据转换为tensor的函数,这个库中还包含了对于图像的数据增广函数,很方便
#数据可视化
trainData[1][0].size()
plt.imshow(trainData[2][0][0,:])
plt.show()

4、定义loss以及数据初始化、因为是回归模型,通常会采用l2作为loss

#定义loss
criterion = nn.MSELoss(size_average=True).cuda()

#训练数据初始化
trainData=Datagen(size=166,transform=transform,sigma=15)
train_loader = torch.utils.data.DataLoader(
        trainData,
        batch_size=1,
        shuffle=True,
        num_workers=2,
        pin_memory=True
    )

5、定义优化器以及初始化网络模型

#网络初始化
net=myNet()
model=net.cuda()
#定义优化器
optimizer = optim.Adam(model.parameters(),lr=0.001 )

6、训练迭代器用for循环即可,这里两层循环分别是,epoch和iteration

#开始迭代训练
epoch=50
for i in range(epoch):
    sum_loss=0
    for i, data in enumerate(train_loader):
        input_data,target=data
        
        input_data=input_data.cuda(non_blocking=True)
        
        target=target.cuda(non_blocking=True)
    
    
        output = model(input_data)
    
    
    
        loss = criterion(output, target)
    
    
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        sum_loss+=loss.item()
    msg='Loss:{loss:.4f}'.format(loss=sum_loss/10.)
    print(msg)

7、模型的保存

torch.save(model.state_dict(), PATH)

8、编辑测试案例

#写个测试例子
testData=Datagen(size=166,transform=transform,sigma=15)
test_loader = torch.utils.data.DataLoader(
        testData,
        batch_size=1,
        shuffle=False,
        num_workers=2,
        pin_memory=True
    )
model.eval()
for i,tData in enumerate(train_loader):
    if i >=1:
        break
    test_input=tData[0].cuda(non_blocking=True)
    test_target=tData[1].cuda(non_blocking=True)
    pred_test=model(test_input)
    
    plt.imshow(test_input[0,0,:,:].cpu().detach().numpy())
    plt.show()
    
    plt.imshow(pred_test[0,0,:,:].cpu().detach().numpy())
    plt.show()
    
    plt.imshow(test_target[0,0,:,:].cpu().detach().numpy())
    plt.show()
    

Pytorch搭建CNN回归--预测值相同问题 推文中用下列例子详细说明梯度爆炸存在的原因,并指出:“有些网络损失一下下降特别多,随后就保持不变,并且输出值也相同” 问题存在的原因是模型使用了 Relu 函数作为隐藏层的激活函数,因为 Relu 函数将负值全变为0的特性,如果在第一个epoch 中,通过 Input 层后到达隐藏层,然后隐藏层未激活的输出全是负数,经过 Relu 后全变为 0,那么此后的输出也都是 0,参数永远无法得到更新。推文中提到:Learnig rate 过大可能导致训练出来的模型输出的结果都是相同的值。2、梯度爆炸、梯度消失。 阅读详情

相关推荐

学习笔记:深度学习(4)——卷积神经网络(CNN)PyTorch实践篇

小白PyTorch超快上手,采用CNN做了一个手写数字识别,一个MINST手写数字预测,以及尝试了Kaggle的Spaceship Titanic案例。

Morganfs的博客 4331

Python基于PyTorch实现卷积神经网络回归模型(CNN回归算法)项目实战

Python基于PyTorch实现卷积神经网络回归模型(CNN回归算法)项目实战

张陈亚的博客 1万+

【Pytorch项目实战】之回归分析:气温预测

【代码】【Pytorch项目实战】之回归分析:气温预测。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 3739

TensorFlow搭建CNN实现时间序列预测(风速预测)

TensorFlow搭建CNN实现时间序列预测(风速预测)

KI的博客 7188

【pytorch】正态分布(高斯分布)、Q函数、误差函数、互补误差函数

则这个随机变量就称为正态随机变量,正态随机变量服从的分布就称为正态分布,记作。这个函数可以看作是高斯分布函数的不定积分,如何相互转换见第5节的图6.2.时,称为标准正态分布。一般正态分布的分布函数。标准正态分布的分布函数。如下图是一般正态分布。如下图是标准整体分布。

学渣的博客 8232

CNN+LSTM+Attention实现时间序列预测(PyTorch版)

一、基于PyTorch搭建CNN+LSTM+Attention模型实现风速时间序列预测 本文的前两篇文章写的是LSTM+Attention和CNN+Attention,由于对于CNN和LSTM可以进行融合形成CNN-LSTM模型,所以本项目作为这三个模型融合的最终版,也就是所谓的CNN+LSTM+Attention。 对于这个融合模型效果理论是相当不错的,但是由于本文只是为了给初学者传达这中搭建方法,所以对于超参数没有进行调节,所以这个终极融合模型的效果应该是体现不出来的,如果需要发挥出它的真正效果,需

斌擎科技 4225

扩散模型核心原理详解:从噪声预测到图像生成的完整机制

扩散模型作为生成式AI的核心技术,通过前向加噪和反向去噪的双过程机制实现高质量内容生成。其基本原理是将复杂生成任务分解为多个简单步骤,核心组件噪声预测器通过学习逐步去除噪声来重建数据。这种方法的优势在于训练稳定性高、生成质量优异,相比传统GANs具有更好的收敛特性。在技术实现上,时间步嵌入和噪声调度器是关键组件,分别控制生成过程的一致性和质量效率平衡。扩散模型已广泛应用于文生图、图生图等场景,并为Stable Diffusion等流行工具提供底层支撑。本文通过代码实例详细解析前向过程的数学原理和反向过程的训

weixin_33860528的博客 451

CTP高频Tick数据:五档期货Level2深度解析20241224

高频Tick五档期货Level2数据,作为一种先进的金融市场分析工具,以其一秒四次的高频更新,为投资者揭示了市场的微观结构。本文将深入探讨这一数据如何帮助投资者洞察市场动态,优化交易策略,实现投资收益的最大化。

level2Tick的博客 1216

扩散模型原理解析:从噪声控制到可控图像生成

扩散模型是一种基于概率建模的生成式AI技术,其核心原理是将数据生成过程分解为可逆的前向加噪与反向去噪两个阶段。通过马尔可夫链对图像逐步添加高斯噪声,再利用神经网络(如U-Net)学习预测并消除噪声,实现稳定、高质量的图像重建。该方法规避了GAN训练不稳定和VAE隐空间坍缩等问题,具备更强的可解释性与工程鲁棒性。其技术价值体现在训练收敛快、失败模式可预测、易于调优,在AI绘画、医疗影像增强、工业缺陷检测等场景中已形成规模化落地。本文聚焦于DDPM框架下的数学推导与代码实现细节,深入剖析噪声调度、时间嵌入、跳跃

weixin_30889885的博客 473

【论文笔记】Reaching agreement in the presence of faults (EIG)

1 问题定义 2 交互一致性 3 单点故障 m=1 n=4 4 多点故障(n>=3m+1) 计算过程 m=2 n=7 5 n<3m+1不能达成协定 6 带认证的算法 7 总结 这篇论文在1980年发表,是1982年著名的拜占庭将军问题论文的前身。作者Leslie Lamport是2013图灵奖得主,两篇论文引用次数分别为5000+和2000+。该论文提出的算法现在被...

zjwreal 2993

Robocorp+Robot Framework学习记录【初学者课程:一级课程】

以下内容均来自:https://robotframework.org/?tab=2#getting-started。通过官网的学习和本地实际安装使用体验而来,本文仅记录学习过程。 Robot Framework介绍 Robot Framework 是一个通用的开源自动化框架。它可用于测试自动化和机器人过程自动化 (RPA)。 Robot Framework环境配置及安装 具体请见:Win10环境下安装pytho、pip与Robot Framework 学习过程与等级划分 官方认为Robot Framew.

OwenDom的博客 5373

基于PyTorch的卷积神经网络

from __future__ import print_function import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms # Device configuration device = torch.device('cuda:0' if torc...

MLer 847

qt5.14.2+vs2019配置msvc2017编译器

qt5.14.2+vs2019配置msvc2017编译器 在使用qt编译程序时此前一直使用的是自带的MinGW 32-bit和64-bit,现在想使用msvc编译器。本次使用的是qt5.14.2,vs2019,需要配置msvc2017的32-bit和64-bit编译器。 1、首先安装好qt5.14.2和vs2019,其次在visual studio installer选择修改,然后选择msvc2017对应的组件,本次安装的是这两个 2、打开qt creator的工具–选项–kits–编译器,选择Manu

bangtanhui的博客 1万+

使用Pytorch解决回归问题的一般方法

1 数据预处理 1.1 归一化(Min-Max Scaling)与标准化(Standardization) 归一化与标准化均不改变数据分布,归一化后数据会在0,1之间(也可以设置成其他任意范围),标准化后数据的均值为0,方差为1。 大多数机器学习算法中,会选择标准化进行特征缩放,因为归一化对异常值非常敏感,在神经网络算法中也是采用标准化处理数据。 归一化: 标准化: 归一化代码实现: '''对每列(特征)归一化''' from sklearn.preprocessing import Mi.

liuqihang11的博客 1万+

用友BIP培训资料-设计采购订单新增API接口开发

14.在子实体的String pkMeas = order_hhrSlave0VOJson.getString("pk_meas");Openapi路径:nccloud/api/pu/order_hhrmanage/order_hhrMaster/addAggOrder_hhrMasterVO。实现接口的开发部署,通过openAPI的test类,实现一条数据的插入。16.进入自己的Idea打开老师发的TestOpenApi并且编译完成后如下。12.编写检测是否字段中是否含有中文的方法。

m0_68497879的博客 1542

作物生长模型Oryza V3实战1:为什么要研究它

ORYZAV3是水稻生长模拟模型ORYZA2000的最新升级版本(3.5版),作为作物生长模型,它通过数学方法和计算机技术模拟水稻生长发育过程及其与环境条件的相互作用。主要功能包括:模拟不同条件下的水稻生长和产量形成、评估环境胁迫影响、分析土壤碳氮动态以及进行区域尺度模拟。国内应用广泛,科研机构用于气候变化影响评估、灌溉模式比较等研究,并开展参数敏感性分析和应用培训。使用流程分为六个步骤:确定输入参数(气象、土壤、作物三类)、参数校准、设置模拟环境、运行模型、分析结果(输出50个参数)和计算产量(穗干重×收

504

(二)pytorch学习笔记 torch.nn 神经网络实现回归

来源于pytorch的官方学习资料的总结 y = [0.5, 14.0, 15.0, 28.0, 11.0, 8.0, 3.0, -4.0, 6.0, 13.0, 21.0] x = [35.7, 55.9, 58.2, 81.9, 56.3, 48.9, 33.9, 21.8, 48.4, 60.4, 68.4] 现在我们有十个点,横纵坐标如上所示,点的在坐标中的分布如下图所示。我们可以通过t...

qq_43225437的博客 1495

【主题建模】一种基于深度学习的主题建模方法:BERTopic(理论篇)

在我的博客中已经写了很多关于主题建模的内容,当你准备了解 BERTopic 时,默认你已经知道了 LSA、pLSA、NFM、LDA 等传统的主题建模方法。关于主题建模的前置知识我在这里不做赘述,感兴趣的同学可以看看我前几篇博客。学习 BERTopic 需要一定的机器学习基础,让我们一起开始吧!

Data · Model · Agent · Repeat 9890

Pytorch--3.使用CNN和LSTM对数据进行预测

使用CNN+LSTM对数据进行预测

还没入门的程序员的博客 1万+

搞定ESD(五):静电放电问题分析与调试

前面深入分析了静电放电的干扰机理、耦合路径,从现在开始将进入下一个大家非常关注的环节:静电放电问题分析与调试,掌握静电放电问题的分析方法,快速锁定敏感设备或者耦合路径,可以达到事半功倍的效果。

记得诚 2792

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python基于PyTorch实现卷积神经网络回归模型

这个示例代码使用了CIFAR10数据集,卷积神经网络模型包括3个卷积层和2个全连接层,优化器使用Adam,训练10个epoch。在训练期间,使用了PyTorch的DataLoader和tqdm库来进行数据迭代和进度条显示,同时计算训练集和测试集的损失。

wgq2020的博客 1363

android 蓝牙通讯demo

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

Pytorch中CNN图像回归问题预测值都一样

解决卷积神经网络预测值相同的问题

cslcdfjd的博客 5248

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

2021-07-26

标题逻辑回归 import torch from torch import nn from matplotlib import pyplot as plt import numpy as np from torch.distributions import MultivariateNormal #构建了多元高斯分布 #设置两个高斯分布的均值向量和高斯矩阵 mu1=-3*torch.ones(2) mu2=3*torch.ones(2) sigmal1=torch.eye(2)*0.5 sigmal2=to

qq_45860787的博客 540

人工智能(pytorch)搭建模型16-基于LSTM+CNN模型的高血压预测的应用

大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型16-基于LSTM+CNN模型的高血压预测的应用,LSTM+CNN模型搭建与训练,本项目将利用pytorch搭建LSTM+CNN模型,涉及项目:高血压预测,高血压是一种常见的性疾病,早期预测和干预对于防止其发展至严重疾病至关重要。

微学AI的博客 5100

深度学习与Pytorch实战(二) 预测房价--线性回归

Pytorch 线性回归 预测模型

volcan的博客 1965

【小白也可做】基于2DCNN的多特征输入的股票预测项目实战(pytorch)(多特征)——仅用于课程和编程学习,不作为任何金融推荐!!!!

若有朋友需要可运行的源码和数据集,可以guan注【科研小条】公众号,回复【股票预测2dcnn】,即可获得。

weixin_44829487的博客 3229
上一篇: 【论文阅读】【AlexNet】【dropout】ImageNet Classification with Deep Convolutional Neural Networks
下一篇: 【姿态估计文章阅读】Structured Feature Learning for Pose Estimation
Jie Ou
博客等级 码龄10年 176粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值