问题标签 [deconvolution]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
18439 浏览

python - 了解 scipy 去卷积

我试图理解scipy.signal.deconvolve

从数学的角度来看,卷积只是傅立叶空间中的乘法,所以我希望对于两个函数fg
Deconvolve(Convolve(f,g) , g) == f

在 numpy/scipy 中,要么不是这种情况,要么我错过了重要的一点。尽管已经存在一些与 SO 上的反卷积相关的问题(例如此处此处),但它们并未解决这一点,但其他问题仍不清楚()或未回答(此处)。SignalProcessing SE ( thisthis )上还有两个问题,这些问题的答案对于理解 scipy 的 deconvolve 函数是如何工作的没有帮助。

问题是:

  • 假设你知道卷积函数 g,你如何从卷积信号重建原始信号f
  • 或者换句话说:这个伪代码如何Deconvolve(Convolve(f,g) , g) == f转换成 numpy / scipy?

编辑请注意,这个问题的目标不是防止数字不准确(尽管这也是一个悬而未决的问题),而是理解卷积/反卷积如何在 scipy.

以下代码尝试使用 Heaviside 函数和高斯滤波器来做到这一点。从图中可以看出,卷积的反卷积结果根本不是原来的Heaviside函数。如果有人能对这个问题有所了解,我会很高兴。

在此处输入图像描述

编辑请注意,有一个matlab 示例,展示了如何使用对矩形信号进行卷积/反卷积

本着这个问题的精神,如果有人能够将这个例子翻译成python,那也会有所帮助。

0 投票
0 回答
82 浏览

tensorflow - deconv 操作真的需要知道输出形状吗?

deconv 操作的文档说我们需要提供 output_shape。是否可以不提供形状张量的第一个元素?当我尝试在形状张量中提供 None 时(还请注意,值的形状具有 None 作为第一个元素),我收到一个类似于以下内容的错误:

0 投票
4 回答
13067 浏览

python - 在tensorflow中寻找gen_nn_ops的源代码

我是 tensorflow 的深度学习新手,对 tensorflow 中的反卷积(卷积转置)操作很感兴趣。我需要看一下操作反卷积的源代码。我猜这个函数是nn_ops.py 中的 conv2d_transpose()

但是,在函数中它调用另一个名为gen_nn_ops.conv2d_backprop_input(). 我需要看看这个函数里面有什么,但我无法在存储库中找到它。任何帮助,将不胜感激。

0 投票
1 回答
191 浏览

c# - 通过将内存中的数字列表相乘来进行卷积,那么逆卷积算法?

虽然“卷积是频域中的乘法”,但从字面上看,它们似乎也是乘法。例如,如果我将内存中相邻的数字连接到一个列表中:

然后将此结果列表/数字乘以另一个这样的列表,结果是一个列表与另一个列表的卷积。以下 C# 程序演示了这一点:

试试这个代码:rextester.com/YPKFA14408

输出是:

可以在此处找到输出第一行正确的演示:https ://oeis.org/A000292

“整数序列在线百科全书”……“四面体(或三角锥)数”……“自然数与其自身的卷积。——费利克斯·戈德堡”


问:提供的代码中的反卷积函数有什么问题,或者我对结果应该是什么的理解?

0 投票
0 回答
358 浏览

machine-learning - 使用 Theano 对特征图进行转置卷积

我在CrossValidation上就图像解释提出了类似的问题。我将我的详细问题移到此处以包含一些代码详细信息。

我得到的结果并不完全理想所以也许你以前遇到过这个问题,你可以帮我找出来。

它是完全卷积神经网络“没有完全连接的部分”。

培训部分

首先将图像转置以匹配卷积函数。(batch_no,img_channels,宽度,高度)

使用学习率优化学习:3e-6,Hu_uniform 初始化和嵌套 500 个 epoch,直到收敛。

  • 培训费用:1.602449
  • 训练损失:4.610442
  • 验证错误:5.126761
  • 测试损失:5.885714

后向部分

加载图像

重塑为一批

使用 Relu 运行模型以在激活后提取第一个特征图

应用 backwork 模型使用唯一激活的神经元重建图像

这里我们有两个图像结果,第一个是没有激活的转置图像,第二个是 relu,因为内核可能有一些负权重。

没有 Relu 与 Relu

从转置的卷积图像中可以清楚地看出,该内核学习检测与该图像相关的一些有用特征。但是重建部分在转置卷积期间破坏了图像配色方案。这可能是因为像素值是小的浮点数。你知道这里的问题在哪里吗?

0 投票
1 回答
1074 浏览

machine-learning - 如何更新反卷积层的权重?

我正在尝试开发一个反卷积层(或者准确地说是转置卷积层)。

在前向传递中,我进行了全卷积(使用零填充的卷积) 在后向传递中,我进行了有效的卷积(没有填充的卷积)以将错误传递到前一层

偏差的梯度很容易计算,只需对多余的维度进行平均即可。

问题是我不知道如何更新卷积滤波器的权重。什么是渐变?我确定这是一个卷积操作,但我不知道如何。我尝试了输入与错误的有效卷积,但无济于事。

0 投票
1 回答
5014 浏览

iphone - 适用于 iOS 10 的 MetalKit:由于执行期间出现错误,命令缓冲区的执行被中止。导致 GPU 超时错误(IOAF 代码 2)

使用 iOS 10 的 MetalKit,当我们尝试执行 MPSCNNConvolution 时,输入如下:

内核大小:16x16 输入通道:300 输出通道:250

输入图像尺寸:250x250x300

命令缓冲区的执行需要 10 秒以上,然后退出并显示“命令缓冲区的执行由于执行过程中的错误而中止。导致 GPU 超时错误(IOAF 代码 2)”。如何解决这个问题?

有没有办法加快这个过程?(因为 10 秒对于执行这些高维卷积来说太长了)

在这些卷积的帮助下,我们的目标是执行反卷积,由于还没有 API,我们尝试自己做。是否有任何 API 方法来执行这些反卷积操作?

0 投票
1 回答
1630 浏览

tensorflow - 使用 Tensorflow.slim 应用 convolution2d_transpose

我正在尝试使用 tf.slim.conv2d 函数应用 2 个卷积层,它们基本上每次都会将我的输入图像的大小减少一半。然后我想应用convolution2d_transpose来恢复我的原始图像形状。问题是我并不完全知道如何使用转置卷积函数,文档也没有太大帮助。

我正在使用自定义包装器,但这是我目前所拥有的:

我现在如何应用卷积转置函数来反转这两层的效果?

0 投票
0 回答
308 浏览

tensorflow - 如何使用卷积转置函数执行上采样?

我想使用 tf.slim 的卷积转置函数,似乎无论我如何选择我的内核大小和步幅,我都无法使卷积转置层的输出大于初始卷积层的输出。我在这里错过了什么吗?

0 投票
1 回答
400 浏览

tensorflow - 卷积-反卷积对给出的维度略有不同

我正在使用一个卷积层,然后是一个反卷积层,如下所示:

我的想法是使初始图像更小,然后通过反卷积将其恢复到原始大小。我实际上正在使用 tf.slim 函数,但参数是上面的。

当我查看输入和输出时,我有一个小的区别:

我认为这可能是由于我的步幅大小或内核大小。我尝试了多个值,但似乎没有一个可以重现原始尺寸。