标签: convolution

卷入使用Mathematica中的插值函数

我正在使用Mathematica 7.

我有一个插值函数,这是一个例子:

pressures = 
  WeatherData["Chicago", "Pressure", {2010, 8}] // 
     DeleteCases[#, {_, _Missing}] & // 
    Map[{AbsoluteTime[#[[1]]], #[[2]]} &, #] & // Interpolation;
Run Code Online (Sandbox Code Playgroud)

我想计算它的衍生物,这是直截了当的:

dpressures = D[pressures[x], x]
Run Code Online (Sandbox Code Playgroud)

现在,如果你绘制这个功能

Plot[3600*dpressures, {x, AbsoluteTime[{2010, 8, 2}], AbsoluteTime[{2010, 8, 30}]}]
Run Code Online (Sandbox Code Playgroud)

(抱歉,不知道如何从Mathematica中发布图像,并且没有时间弄明白.)你会发现它非常嘈杂.所以,我想说清楚它.我的第一个想法是使用Convolve,并将其与高斯内核集成,如下所示:

a = Convolve[PDF[NormalDistribution[0, 5], x], 3600*dpressures, x, y]
Run Code Online (Sandbox Code Playgroud)

返回

360 Sqrt[2/\[Pi]] Convolve[E^(-(x^2/50)), InterpolatingFunction[{{3.48961266 10^9, 3.49228746 10^9}},<>], ][x], x, y]
Run Code Online (Sandbox Code Playgroud)

这对我来说看起来很合理.不幸的是,我相信我在某个地方犯了一个错误,因为我回来的结果似乎不是可评估的.那是:

a /. y -> AbsoluteTime[{2010, 8, 2}]
Run Code Online (Sandbox Code Playgroud)

返回

360 Sqrt[2/\[Pi]] Convolve[E^(-(x^2/50)), InterpolatingFunction[{{3.48961266 10^9, 3.49228746 10^9}},<>][x], x, 3489696000]]
Run Code Online (Sandbox Code Playgroud)

这不是我想要的东西我期待-1到1之间的数字.

wolfram-mathematica curvesmoothing convolution

3
推荐指数
1
解决办法
1502
查看次数

CUDA FFT - 两个幂

我正在研究CUDA SDK上的FFT示例,我想知道:当填充数据的一半是2的幂时,为什么CUFFT要快得多?(因为频域中的一半是多余的)

拥有两种尺寸的力量有什么意义?

c++ cuda convolution

3
推荐指数
1
解决办法
3471
查看次数

矩阵和子矩阵之间的反卷积

我有一个矩阵a=[[1 2 3]; [4 5 6]; [7 8 9]]和一个子矩阵b=[[5 6];[8 9]].

在matlab中有解卷积的方法(a,b)吗?

我正在寻找一种方法来识别可能的巨型矩阵中子矩阵的存在.通过一种反卷积,我希望1在子矩阵存在的地方获得类似于零的矩阵.

在上面的例子中,a 1在右下角.

matlab image-processing matrix convolution

3
推荐指数
1
解决办法
3281
查看次数

CImg库中的get_convolve()函数正在使用哪个过滤器

CImg库的get_convolve()函数使用哪种过滤器(用C编写)?中位或高斯或双边或其他?我试图了解该功能,以便我可以在PIL openCV中使用类似的功能.在库的头文件CImg.h中,它说:

/**
   Compute the convolution of the image by a mask.
   The result \p res of the convolution of an image \p img by a mask \p mask is defined to be :

   res(x,y,z) = sum_{i,j,k} img(x-i,y-j,z-k)*mask(i,j,k)

   param mask = the correlation kernel.
   param cond = the border condition type (0=zero, 1=dirichlet)
   param weighted_convol = enable local normalization.
**/
Run Code Online (Sandbox Code Playgroud)

声明是这样的:

 template<typename t> CImg<typename cimg::superset2<T,t,float>::type>
  get_convolve(const CImg<t>& mask, const unsigned int cond=1, const bool weighted_convol=false) const {}
Run Code Online (Sandbox Code Playgroud)

这是一个代码片段:

                for (int …
Run Code Online (Sandbox Code Playgroud)

opencv convolution cimg imagefilter

3
推荐指数
1
解决办法
853
查看次数

Theano conv2d和max_pool_2d

当在实现卷积神经网络(CNN)时,遇到两个conv2d运算符变体:

并实现max-pooling:

我的问题是:

  1. 这两种实现有conv2d什么区别?
  2. subsample参数的使用conv2dmax_pool_2d后采样的应用之间有什么区别conv2d
    那是什么区别:

    conv2d( ..., subsample=(2,2) ) 
    
    Run Code Online (Sandbox Code Playgroud)

    a = conv2d( ..., subsample = (1,1) )
    max_pool_2d( a, ds = (2,2) )
    
    Run Code Online (Sandbox Code Playgroud)

python numpy convolution neural-network theano

3
推荐指数
1
解决办法
5071
查看次数

Theano:在自动编码器中用步幅(子采样)重建卷积

我想用Theano训练一个简单的卷积自动编码器,它一直很好用.但是,我没有看到conv2d在使用子采样(stride)时如何反转命令.有没有一种有效的方法可以在使用步幅时"反转"卷积命令,如下图所示?

图像无耻地被盗,并从http:/cs231n.github.io/convolutional-networks绘制.

例如,我想更改以下内容......

from theano.tensor.nnet.conv import conv2d
x = T.tensor4('x') 
y = T.tanh(  conv2d( x, W, border_mode='valid', subsample = (1,1) )  )
z = conv2d( y, Wprime, border_mode='full', subsample = (1,1)  )
Run Code Online (Sandbox Code Playgroud)

......进入的情况subsample = (2,2).第一层将按预期工作.但是,第二层将有效地"用步幅1进行卷积,然后丢弃一半的输出".这显然是与我正在寻找的不同的操作 - z甚至不会像长度一样具有相同数量的神经元x.第二个conv2d命令应该"重建"原件x

convolution neural-network theano conv-neural-network

3
推荐指数
1
解决办法
2592
查看次数

3D矩阵切片的2D卷积

我正在尝试在MATLAB中对矩阵进行一堆滚动求和.为了避免循环,我习惯repmat将2D矩阵分层为3D结构.但是,现在快速卷积功能conv2不能再用于累加器.然而,N维卷积函数(convn)不是我正在寻找的,因为它实际上卷积了所有3个维度.我想要在每个切片上进行2D卷积并返回3D矩阵的东西.

在2D中平铺矩阵而不是在3D中分层它们将无法工作,因为它会破坏卷积边缘情况.我可以在它们之间用零填充但是它开始变得有点混乱.

换句话说,如果没有for循环,我该如何执行以下操作:

A = ones(5,5,5);
B = zeros(size(A));
for i = 1 : size(A, 3)
    B(:,:,i) = conv2(A(:,:,i), ones(2), 'same');
end
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

matlab matrix convolution

3
推荐指数
1
解决办法
1710
查看次数

CNN:从word2vec初始化未知单词

我偶然发现了这些幻灯片,关于CNN使用word2vec来介绍CNN:http://www.people.fas.harvard.edu/~yoonkim/data/Kim_EMNLP_2014_slides.pdf

在幻灯片20上,第四个要点是:

Words not in word2vec are initialized randomly from U[?a, a] 
where a is chosen such that the unknown words have the
same variance as words already in word2vec.
Run Code Online (Sandbox Code Playgroud)

现在我想知道如何计算"a"以及如何计算完全未知单词的整个向量.

convolution word2vec deep-learning

3
推荐指数
1
解决办法
925
查看次数

如何以正确的形式生成Toeplitz矩阵以执行离散卷积?

可以通过Toeplitz矩阵执行离散卷积,如下所示(Wiki文章):

在此输入图像描述

请注意,这与一般Toeplitz矩阵的形式不完全相同,但它经历了各种移位和零填充.

有没有办法在numpy的纯粹的基础上实现这一目标roll,hstack等,即不使用任何for循环?我尝试了各种各样的转变,但我不能真正把它变成上面显示的形式.

python numpy linear-algebra convolution toeplitz

3
推荐指数
1
解决办法
2945
查看次数

不使用conv2的Matlab图像过滤

我被赋予了为3x3矩阵创建图像过滤功能的任务,其结果必须等于conv2.我写过这个函数,但是它错误地过滤了图像:

function [ image ] = Func134( img,matrix )
  image=img;
  len=length(img)
  for i=2:1:len-1
    for j=2:1:len-1
      value=0;
      for g=-1:1:1
        for l=-1:1:1
          value=value+img(i+g,j+l)*matrix(g+2,l+2);
        end
      end
     image(i,j)=value;
    end
  end
i=1:1:length
image(i,1)=image(i,2)
image(i,len)=image(i,len-1)
image(1,i)=image(2,i)
image(len,i)=image(len-1,i)
end
Run Code Online (Sandbox Code Playgroud)

过滤矩阵为[3,10,3; 0,0,0; ​​-3,-10,-3]

请帮助弄清楚我的代码有什么问题.

我得到的一些示例结果conv2和我的代码如下所示.

图像处理结果

matlab filtering image image-processing convolution

3
推荐指数
1
解决办法
3270
查看次数