- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
手动完成时,一维卷积非常简单。但是,我想实现所做的here使用 nn.Conv1d
而我做到这一点并不简单。在这个例子中 h=[1,2,-1], x=[4,1,2,5] 并且输出将是 y=[4,9,0,8,8,-5]。要使用 Pytorch 做到这一点,我们需要定义 h=nn.Conv1d(in, out, k)
和 x=torch.tensor(*)
和 y=h(x)
应该是结果。
注:请不要使用 nn.Conv2d
来实现它。
最佳答案
首先,您应该意识到,基本上所有与卷积神经网络 (CNN) 相关的文献中使用的术语“卷积”实际上对应于 correlation operation不是 convolution operation .
相关和卷积之间的唯一区别(对于实值输入)是在卷积中,内核在将其滑过信号之前被翻转/镜像,而在相关中没有发生这种翻转。
CNN 中的卷积层还执行一些不属于卷积定义的额外操作。他们应用偏移量(也称为偏差),对小批量进行操作,并将多 channel 输入映射到多 channel 输出。
因此,为了使用卷积层重新创建卷积操作,我们应该 (i) 禁用偏差,(ii) 翻转内核,以及 (iii) 将批量大小、输入 channel 和输出 channel 设置为 1。
例如,卷积操作的 PyTorch 实现使用 nn.Conv1d
看起来像这样:
import torch
from torch import nn
x = torch.tensor([4, 1, 2, 5], dtype=torch.float)
k = torch.tensor([1, 2, -1], dtype=torch.float)
# Define these constants to differentiate the various usages of "1".
BATCH_SIZE, IN_CH, OUT_CH = 1, 1, 1
# Pad with len(k)-1 zeros to ensure all non-zero outputs are computed.
h = nn.Conv1d(IN_CH, OUT_CH, kernel_size=len(k), padding=len(k) - 1, bias=False)
# Copy flipped k into h.weight.
# h.weight is shape (OUT_CH, IN_CH, kernel_size), reshape k accordingly.
# Perform copy inside no_grad context to avoid autograd issues.
with torch.no_grad():
h.weight.copy_(torch.flip(k, dims=[0]).reshape(OUT_CH, IN_CH, -1))
# Input shape to h is assumed to be (BATCH_SIZE, IN_CH, SIGNAL_LENGTH), reshape x accordingly.
# Output shape of h is (BATCH_SIZE, OUT_CH, OUTPUT_LENGTH), reshape output to 1D signal.
y = h(x.reshape(BATCH_SIZE, IN_CH, -1)).reshape(-1)
这导致
>>> print(y)
tensor([ 4., 9., 0., 8., 8., -5.], grad_fn=<ViewBackward>)
关于简单一维信号上的 Pytorch Conv1d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66663657/
我正在处理 ILGenerator使用 Expression 帮助发射 IL 片段的扩展.一切都很好,直到我处理整数转换部分。有些东西对我来说确实违反直觉,例如: 使用 conv.i8转换 Int32
我希望使用 Google 操作在 Firebase 函数的对话中创建一个 super 简单的计数器。 documentation推荐: app.intent('Default Welcome Inte
我有一些代码可以将数字从十六进制转换为十进制,并检查是否大于或等于。今天,我发现这并不总是有效,我也不知道为什么。 我试过使用原始值,效果很好。比较工作之外的转换。 select case when
我目前正在尝试理解卷积神经网络中的权重共享到底是什么。 据我所知,CNN 最初是作为一种减少连接输入和输出所需的连接数量的方法引入的,因为输入具有 3 个维度。 按照这个逻辑,卷积减少其中一个维度,并
本文Let there be Color!实现CNN,属性如下: 图片大小:224x224 内核大小:3X3 步幅:2X2 填充:1x1 在论文中,他们提到输出层大小为 112X112 但使用公式 N
我正在使用卷积网络进行图像分类。 理论上有一些东西我不明白 对于训练,我将数据分为 60% 训练/20% 验证/20% 测试 当验证集上的指标最好时,我会节省重量(我在训练和验证集上具有相同的性能)。
我正在尝试实现 cyclegan。然而,即使在 10 或 25 个 epoch 之后,我生成的图像上似乎总是出现白点。我想知道可能出了什么问题?我应该继续训练,问题就会消失吗?或者有任何关于如何解决这
我是 keras 的新手。 我在一个数据集上运行它,我的目标是减少 logloss。 对于每个时代,它都给我相同的损失值。我很困惑我是否在正确的轨道上。 例如: Epoch 1/5 91456/914
我用较小的数据集训练了以下 CNN 模型,因此它确实过拟合: model = Sequential() model.add(Conv2D(32, kernel_size=(3,3), input_sh
问题How to initialize weights in PyTorch?显示如何初始化 Pytorch 中的权重.但是,Conv 的默认权重初始值设定项是什么?和 Dense在 Pytorch
我找不到任何关于 YOLOv3 SPP 更好的解释 mAP比 YOLOv3。作者本人在他的 repo 中将 YOLOv3 SPP 声明为: YOLOv3 with spatial pyramid po
我发现在(彩色)imagenet 数据库(如 .npy)上预训练的 VGG16 网络。是否有在可用的 imagenet 数据库灰度版本上预训练的 VGG16 网络? (在灰色 1 channel 输入
CNN 的输入大小应该遵循训练数据的输入大小吗?例如,如果我的训练数据大小为 192 x 98,那么我的 CNN 的输入大小应该是多少? 192×192? 98×98?如果我使用 32x32 输入 C
我正在学习如何使用 Keras 和 CIFAR-10 数据集实现数据增强。我正在在线教程和这本书的帮助下学习Deep learning with Keras. 代码具体详情为here . 这是我的问题
我在深度网络中使用 1x1 卷积来减少特征 x:Bx2CxHxW 到 BxCxHxW。我有三个选择: x -> Conv (1x1) -> Batchnorm-->ReLU。代码将为output =
我不确定这在 Tensorflow 中是否可行,我担心我可能不得不切换到 PyTorch。 基本上,我有这一层: self.policy_conv1 = tf.layers.conv2d(inputs
我正在使用 actions-sdk 和 nodejs 构建一个“游戏”。对于此游戏,一项功能要求音频在接受用户输入之前完成。是否可以使用 conv.ask() 忽略文本意图的输入,直到音频完成?另外,
(yolo - 物体检测) 如果图像中有两只狗,而我在训练集中存在的所有图像中只对其中一只进行了训练, 训练集中我没有标记和训练的其他狗是否会影响过程并导致将它们视为背景的一部分? 我特别询问 yol
我正在尝试 convert CNN Keras model对于使用 FER2013 数据集到 PyTorch 模型的情绪识别,我有以下错误: Traceback (most recent call l
函数名conv中的“localeconv()”是什么意思在标题 ? 最佳答案 The HP-UX manual pages ,将 localeconv() 的用途总结为: localeconv()
我是一名优秀的程序员,十分优秀!