Python深度学习pytorch神经网络多输入多输出通道

目录
  • 多输入通道
  • 多输出通道
  • 1 × 1 1\times1 1×1卷积层

虽然每个图像具有多个通道和多层卷积层。例如彩色图像具有标准的RGB通道来指示红、绿和蓝。但是到目前为止,我们仅展示了单个输入和单个输出通道的简化例子。这使得我们可以将输入、卷积核和输出看作二维张量。

当我们添加通道时,我们的输入和隐藏的表示都变成了三维张量。例如,每个RGB输入图像具有 3 × h × w 3\times{h}\times{w} 3×h×w的形状。我们将这个大小为3的轴称为通道(channel)维度。在本节中,我们将更深入地研究具有多输入和多输出通道的卷积核。

多输入通道

当输入包含多个通道时,需要构造一个与输入数据具有相同输入通道数目的卷积核,以便与输入数据进行互相关计算。

多输出通道

到目前为止,不论有多少输入通道,我们还只有一个输出通道。然而,每一层有多个输出通道是至关重要的。
在最流行的神经网络架构中,随着神经网络层数的加深,我们常会增加输出通道的维数,通过减少空间分辨率以获得更大的通道深度。
直观地说,我们可以将每个通道看作是对不同的特征的相应。

1 × 1 1\times1 1×1卷积层

1 × 1 1\times1 1×1卷积,这看起来似乎没有多大意义。毕竟,卷积的本质是有效提取相邻像素间的相关特征,而 1 × 1 1\times1 1×1卷积显然没有此作用。尽管如此, 1 × 1 1\times1 1×1仍然十分流行,时常包含在复杂深层网络的设计中。

因为使用了最小窗口, 1 × 1 1\times1 1×1卷积失去了卷积层的特有能力——在高度核宽度维度上,识别相邻元素间相互作用的能力。其实, 1 × 1 1\times1 1×1卷积的唯一计算发生在通道上。

下图展示了使用 1 × 1 1\times1 1×1卷积核与3个输入通道和2个输出通道的互相关计算。这里输入和输出具有相同的高度和宽度,输出中的每个元素都是从输入图像中的同一位置的元素的线性组合。我们可以将 1 × 1 1\times1 1×1卷积层看作是在每个像素位置应用的全连接层。

以上就是Python深度学习pytorch神经网络多输入多输出通道的详细内容,更多关于pytorch神经网络多输入多输出通道的资料请关注我们其它相关文章!

(0)

相关推荐

  • PyTorch快速搭建神经网络及其保存提取方法详解

    有时候我们训练了一个模型, 希望保存它下次直接使用,不需要下次再花时间去训练 ,本节我们来讲解一下PyTorch快速搭建神经网络及其保存提取方法详解 一.PyTorch快速搭建神经网络方法 先看实验代码: import torch import torch.nn.functional as F # 方法1,通过定义一个Net类来建立神经网络 class Net(torch.nn.Module): def __init__(self, n_feature, n_hidden, n_output):

  • 关于pytorch中全连接神经网络搭建两种模式详解

    pytorch搭建神经网络是很简单明了的,这里介绍两种自己常用的搭建模式: import torch import torch.nn as nn first: class NN(nn.Module): def __init__(self): super(NN,self).__init__() self.model=nn.Sequential( nn.Linear(30,40), nn.ReLU(), nn.Linear(40,60), nn.Tanh(), nn.Linear(60,10), n

  • Python实现CNN的多通道输入实例

    CNN可以同时进行多通道的输入,例如一张彩色图片可以分解成RGB三个通道输入给CNN,当使用自己的数据集时,可以通过numpy来实现数据的多通道输入. 假设我们有两个组数据a和b: a = np.linspace(1,100,100) b = np.linsapce(-1,-100,100) 然后将a和b转变成四维数组,TensorFlow接收的数据时四维数组 a = a.reshape(4,1,5,5) b = b.reshape(4,1,5,5) 这样我们就得到了两个batch_size =

  • Pytorch 定义MyDatasets实现多通道分别输入不同数据方式

    最近在做一个项目,用双通道神经网络,每个通道输入不同数据训练,具有相同label.开始没想到如何实现,网上很多例子都是单通道,即便找到双通道的例子,两个通道的输入也相同. 最后,终于想到了一个办法.多输入和单输入其实是一样的,只需要重新改写torch.utils.data.Datasets. 需要改写class Dataset里面的init.len和getitem 一个例子: class MyDataset(data.Dataset): def __init__(self, data1,data

  • Python深度学习pytorch神经网络多输入多输出通道

    目录 多输入通道 多输出通道 1 × 1 1\times1 1×1卷积层 虽然每个图像具有多个通道和多层卷积层.例如彩色图像具有标准的RGB通道来指示红.绿和蓝.但是到目前为止,我们仅展示了单个输入和单个输出通道的简化例子.这使得我们可以将输入.卷积核和输出看作二维张量. 当我们添加通道时,我们的输入和隐藏的表示都变成了三维张量.例如,每个RGB输入图像具有 3 × h × w 3\times{h}\times{w} 3×h×w的形状.我们将这个大小为3的轴称为通道(channel)维度.在本节

  • Python深度学习pytorch神经网络Dropout应用详解解

    目录 扰动的鲁棒性 实践中的dropout 简洁实现 扰动的鲁棒性 在之前我们讨论权重衰减(L2​正则化)时看到的那样,参数的范数也代表了一种有用的简单性度量.简单性的另一个有用角度是平滑性,即函数不应该对其输入的微笑变化敏感.例如,当我们对图像进行分类时,我们预计向像素添加一些随机噪声应该是基本无影响的. dropout在正向传播过程中,计算每一内部层同时注入噪声,这已经成为训练神经网络的标准技术.这种方法之所以被称为dropout,因为我们从表面上看是在训练过程中丢弃(drop out)一些

  • Python深度学习pytorch神经网络图像卷积运算详解

    目录 互相关运算 卷积层 特征映射 由于卷积神经网络的设计是用于探索图像数据,本节我们将以图像为例. 互相关运算 严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cross-correlation),而不是卷积运算.在卷积层中,输入张量和核张量通过互相关运算产生输出张量. 首先,我们暂时忽略通道(第三维)这一情况,看看如何处理二维图像数据和隐藏表示.下图中,输入是高度为3.宽度为3的二维张量(即形状为 3 × 3 3\times3 3×3).卷积核的高度和宽度都是2. 注意,

  • Python深度学习pytorch神经网络填充和步幅的理解

    目录 填充 步幅 上图中,输入的高度和宽度都为3,卷积核的高度和宽度都为2,生成的输出表征的维度为 2 × 2 2\times2 2×2.从上图可看出卷积的输出形状取决于输入形状和卷积核的形状. 填充 以上面的图为例,在应用多层卷积时,我们常常丢失边缘像素. 解决这个问题的简单方法即为填充(padding):在输入图像的边界填充元素(通常填充元素是0). 例如,在上图中我们将 3 × 3 3\times3 3×3输入填充到 5 × 5 5\times5 5×5,那么它的输出就增加为 4 × 4

  • Python深度学习pytorch神经网络汇聚层理解

    目录 最大汇聚层和平均汇聚层 填充和步幅 多个通道 我们的机器学习任务通常会跟全局图像的问题有关(例如,"图像是否包含一只猫呢?"),所以我们最后一层的神经元应该对整个输入的全局敏感.通过逐渐聚合信息,生成越来越粗糙的映射,最终实现学习全局表示的目标,同时将卷积图层的所有有时保留在中间层. 此外,当检测较底层的特征时(例如之前讨论的边缘),我们通常希望这些特征保持某种程度上的平移不变性.例如,如果我们拍摄黑白之间轮廓清晰的图像X,并将整个图像向右移动一个像素,即Z[i, j] = X[

  • Python深度学习pytorch神经网络多层感知机简洁实现

    我们可以通过高级API更简洁地实现多层感知机. import torch from torch import nn from d2l import torch as d2l 模型 与softmax回归的简洁实现相比,唯一的区别是我们添加了2个全连接层.第一层是隐藏层,它包含256个隐藏单元,并使用了ReLU激活函数.第二层是输出层. net = nn.Sequential(nn.Flatten(), nn.Linear(784, 256), nn.ReLU(), nn.Linear(256, 1

  • Python深度学习pytorch神经网络块的网络之VGG

    目录 VGG块 VGG网络 训练模型 与芯片设计中工程师从放置晶体管到逻辑元件再到逻辑块的过程类似,神经网络结构的设计也逐渐变得更加抽象.研究人员开始从单个神经元的角度思考问题,发展到整个层次,现在又转向模块,重复各层的模式. 使用块的想法首先出现在牛津大学的视觉几何组(visualgeometry Group)(VGG)的VGG网络中.通过使用循环和子程序,可以很容易地在任何现代深度学习框架的代码中实现这些重复的结构. VGG块 经典卷积神经网络的基本组成部分是下面的这个序列: 1.带填充以保

  • Python深度学习pytorch卷积神经网络LeNet

    目录 LeNet 模型训练 在本节中,我们将介绍LeNet,它是最早发布的卷积神经网络之一.这个模型是由AT&T贝尔实验室的研究院Yann LeCun在1989年提出的(并以其命名),目的是识别手写数字.当时,LeNet取得了与支持向量机性能相媲美的成果,成为监督学习的主流方法.LeNet被广泛用于自动取款机中,帮助识别处理支票的数字. LeNet 总体来看,LeNet(LeNet-5)由两个部分组成: 卷积编码器: 由两个卷积层组成 全连接层密集快: 由三个全连接层组成 每个卷积块中的基本单元

  • Python深度学习pytorch实现图像分类数据集

    目录 读取数据集 读取小批量 整合所有组件 目前广泛使用的图像分类数据集之一是MNIST数据集.如今,MNIST数据集更像是一个健全的检查,而不是一个基准. 为了提高难度,我们将在接下来的章节中讨论在2017年发布的性质相似但相对复杂的Fashion-MNIST数据集. import torch import torchvision from torch.utils import data from torchvision import transforms from d2l import to

  • Python深度学习pyTorch权重衰减与L2范数正则化解析

    下面进行一个高维线性实验 假设我们的真实方程是: 假设feature数200,训练样本和测试样本各20个 模拟数据集 num_train,num_test = 10,10 num_features = 200 true_w = torch.ones((num_features,1),dtype=torch.float32) * 0.01 true_b = torch.tensor(0.5) samples = torch.normal(0,1,(num_train+num_test,num_fe

随机推荐