卷积层梯度反向传播,反卷积,上采样以及反池化

2024-02-20 07:50

本文主要是介绍卷积层梯度反向传播,反卷积,上采样以及反池化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 卷积层梯度反向传播

卷积的前向传播,相对简单 O u p u t = ( I n p u t + 2 p − k ) / s + 1 Ouput = (Input +2p- k)/s + 1 Ouput=(Input+2pk)/s+1,具体实现,可以参考https://zhuanlan.zhihu.com/p/40951745
卷积运算也是转化成矩阵的乘法,如下图
在这里插入图片描述
上图是个多通道的算例,这里就是先运用img2col(image to column),将图片转化成矩阵,然后kernel reshape成一个矩阵,相乘得到output,然后在reshape成图片的形状。下面是个简单的单通道示例在这里插入图片描述
,这里计算梯度反向传播,发现对于YC和WC的梯度都很好计算,而计算XC的梯度相对麻烦在这里插入图片描述
在这里插入图片描述
然后进行最终转化发现,计算X的梯度也是一个卷积运算,就是相当于对Y进行卷积,这个也被称为是反卷积在这里插入图片描述
具体的计算过程在这里插入图片描述
(2) 对于K就是原始K的转置矩阵(就是类似卷积前向是 ( 1 X 9 ) ∗ ( 9 X 3 ) = ( 1 X 3 ) (1X9)* (9X3) = (1X3) 1X9(9X3)=(1X3),然 后进行逆运算 ( 1 X 3 ) ∗ ( 3 X 9 ) = ( 1 X 9 ) (1X3)* (3X9)=(1X9) 1X33X9=1X9
在这里插入图片描述
这个就是整个反向梯度传播的过程,其实也是反卷积的过程。

2 反卷积计算过程

具体可参考(https://zhuanlan.zhihu.com/p/48501100)
反卷积的原理如上,实际计算过程,就是给定输入input(3x3),输出(5x5),stride=2,kernel=3*3,反卷积有几种计算方式,其中一种是对input进行插值补0,然后在进行卷积,一般在input之间进行插0的个数是stride-1;按以上的例子就是input插0之后变成5x5输入,然后通过计算padding=1,这里的卷积计算stride好像都是默认为1(这点还有待考究),这样output=(5+2-3)/1+1=5与预期的输出匹配上了;假设输出是6x6,这样就是padding可以设为2,然后输出是7x7,然后在裁剪成6x6(但是这里好像每个框架实现不太一样,有待考究)。

3 反卷积和上采样,反池化的区别

这三种方法都是扩大feature map的方法,就是对语义分割,GAN中会用到,进行图片的再生成,具体可参考(https://blog.csdn.net/qq_27871973/article/details/82973048)
1 这里反卷积可以反向生成对应的大小,但是不能完全生成对应的值,这个也是卷积计算,kernel等都是学习得到的,而且反卷积有个严重的就是棋盘效应(就是对于kernel除以stride不是整数,但是其他就不会),具体可以参考https://distill.pub/2016/deconv-checkerboard/在这里插入图片描述
在这里插入图片描述
2 上采样,一般就是重采样或者线性插值,进行扩大feature,但是这种不能改变channel数量,所以一般后面跟一个卷积;所以一般现在都是用upsampling+卷积这种方式,去替代反卷积

3 反池化,就是假设前向是最大池化,就记住最大池化的位置,反向的时候,那个位置依然保证最大池化的数值,其余的补0;如果是平均池化,在反向的时候就所有的位置都补成相同的值

这篇关于卷积层梯度反向传播,反卷积,上采样以及反池化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

✨机器学习笔记(二)—— 线性回归、代价函数、梯度下降

1️⃣线性回归(linear regression) f w , b ( x ) = w x + b f_{w,b}(x) = wx + b fw,b​(x)=wx+b 🎈A linear regression model predicting house prices: 如图是机器学习通过监督学习运用线性回归模型来预测房价的例子,当房屋大小为1250 f e e t 2 feet^

用einsum实现MultiHeadAttention前向传播

einsum教程网站Einstein Summation in Numpy | Olexa Bilaniuk's IFT6266H16 Course Blog 编写训练模型 import tensorflow as tfclass Model(tf.keras.Model):def __init__(self, num_heads, model_dim):super().__init__

AI学习指南深度学习篇-带动量的随机梯度下降法的基本原理

AI学习指南深度学习篇——带动量的随机梯度下降法的基本原理 引言 在深度学习中,优化算法被广泛应用于训练神经网络模型。随机梯度下降法(SGD)是最常用的优化算法之一,但单独使用SGD在收敛速度和稳定性方面存在一些问题。为了应对这些挑战,动量法应运而生。本文将详细介绍动量法的原理,包括动量的概念、指数加权移动平均、参数更新等内容,最后通过实际示例展示动量如何帮助SGD在参数更新过程中平稳地前进。

AI学习指南深度学习篇-带动量的随机梯度下降法简介

AI学习指南深度学习篇 - 带动量的随机梯度下降法简介 引言 在深度学习的广阔领域中,优化算法扮演着至关重要的角色。它们不仅决定了模型训练的效率,还直接影响到模型的最终表现之一。随着神经网络模型的不断深化和复杂化,传统的优化算法在许多领域逐渐暴露出其不足之处。带动量的随机梯度下降法(Momentum SGD)应运而生,并被广泛应用于各类深度学习模型中。 在本篇文章中,我们将深入探讨带动量的随

基于深度学习 卷积神经网络resnext50的中医舌苔分类系统

项目概述 本项目旨在通过深度学习技术,特别是利用卷积神经网络(Convolutional Neural Networks, CNNs)中的ResNeXt50架构,实现对中医舌象图像的自动分类。该系统不仅能够识别不同的舌苔类型,还能够在PyQt5框架下提供一个直观的图形用户界面(GUI),使得医生或患者能够方便地上传舌象照片并获取分析结果。 技术栈 深度学习框架:采用PyTorch或其他

Linux如何做ssh反向代理

SSH反向代理是一种通过SSH协议实现的安全远程访问方式,它允许客户端通过SSH连接到一台具有公网IP的代理服务器,然后这台代理服务器再将请求转发给内部网络中的目标主机。以下是实现SSH反向代理的步骤: 一、准备工作 确保服务器配置: 内网服务器(目标主机)和外网服务器(代理服务器)都安装了SSH服务,并且能够通过SSH进行互相访问。内网服务器上的服务(如Web服务、数据库服务等)需要在本地

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构

Nginx反向代理功能及动静分离实现

一:Nginx支持正向代理和反向代理 1.正向代理 正向代理,指的是通过代理服务器 代理浏览器/客户端去重定向请求访问到目标服务器 的一种代理服务。 正向代理服务的特点是代理服务器 代理的对象是浏览器/客户端,也就是对于目标服务器 来说浏览器/客户端是隐藏的。 正向代理是客户端指定让代理去访问哪个服务,代表客户端的利益。 2.反向代理 反向代理,指的是浏览器/客户端并不知道自己要

什么是GPT-3的自回归架构?为什么GPT-3无需梯度更新和微调

文章目录 知识回顾GPT-3的自回归架构何为自回归架构为什么架构会影响任务表现自回归架构的局限性与双向模型的对比小结 为何无需梯度更新和微调为什么不需要怎么做到不需要 🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发,目前开始人工智能领域相关知识的学习 🦅个人主页:@逐梦苍穹 📕所属专栏:人工智能 🌻gitee地址:x

重复采样魔法:用更多样本击败单次尝试的最强模型

这篇文章探讨了通过增加生成样本的数量来扩展大型语言模型(LLMs)在推理任务中的表现。 研究发现,重复采样可以显著提高模型的覆盖率,特别是在具有自动验证工具的任务中。研究还发现,覆盖率与样本数量之间的关系可以用指数幂律建模,揭示了推理时间的扩展规律。尽管多数投票和奖励模型在样本数量增加时趋于饱和,但在没有自动验证工具的任务中,识别正确样本仍然是一个重要的研究方向。 总体而言,重复采样提供了一种