no_*_*ame 30 convolution matrix-multiplication neural-network deep-learning conv-neural-network
我知道在1-d情况下,两个矢量之间的卷积a可以被计算为
b,也可作为在之间的乘积conv(a, b)和T_a,其中b是用于相应的托普利兹矩阵T_a.
是否有可能将这个想法扩展到2-D?
给定a和a = [5 1 3; 1 1 2; 2 1 3]是否有可能b=[4 3; 1 2]在Toeplitz矩阵中进行转换a并T_a在1-D情况下计算矩阵矩阵乘积?
Sal*_*ali 36
是的,这是可能的,您还应该使用双块循环矩阵(这是Toeplitz矩阵的特例).我将给你一个小内核和输入的例子,但是可以为任何内核构造Toeplitz矩阵.所以你有一个2d输入x和2d内核k,你想要计算卷积x * k.我们也假设k已经翻了.让我们也假设x是大小n×n和k是m×m.
因此,您将展开k为大小的稀疏矩阵(n-m+1)^2 × n^2,并展开x为长向量n^2 × 1.您计算此稀疏矩阵与向量的乘法,并将得到的向量(将具有大小(n-m+1)^2 × 1)转换为n-m+1方阵.
我很确定这只是从阅读中难以理解.所以这是一个2×2内核和3×3输入的例子.
这是一个带向量的构造矩阵:
这是你做的滑动窗口已经得到了相同的结果k了x.
Ali*_*ehi 12
让我成为输入信号,F是滤波器或内核.
如果I是m1 x n1而F是m2 x n2,则输出的大小为:
零填充滤波器使其与输出的大小相同.
现在所有这些小的Toeplitz矩阵都应该安排在一个大的双重阻塞的Toeplitz矩阵中.

该乘法给出了卷积结果.
有关更多详细信息和python代码,请查看我的github存储库:
使用python中的toeplitz矩阵逐步解释2D卷积实现为矩阵乘法
| 归档时间: |
|
| 查看次数: |
23525 次 |
| 最近记录: |