美文网首页
mxnet:1×1卷积层

mxnet:1×1卷积层

作者: AI秘籍 | 来源:发表于2020-04-28 22:03 被阅读0次

1.定义

1×1卷积层就是卷积窗口形状为1×1(kh=kw=1)的多通道卷积层.

由于使用了最小窗口,1×1卷积层失去了卷积层可以识别高和宽维度上相邻元素构成的模式的功能.

1×1卷积层主要计算发生在通道维上.

1×1卷积层的输入数据和输出数据具有相同的高和宽.
输出数据中的每个元素来自输入数据中在高和宽上相同位置的元素在不同通道之间的按权重累加.

假设我们将通道维当做特征维,将高和宽维度上的元素当成数据样本,那么1×1卷积层的作用与全连接层等价.--NiN网络.


image.png
from mxnet import nd

def corr2d(X, K):
    """Compute 2D cross-correlation."""
    h, w = K.shape
    Y = nd.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1))
    for i in range(Y.shape[0]):
        for j in range(Y.shape[1]):
            Y[i, j] = (X[i: i + h, j: j + w] * K).sum()
    return Y


def corr2d_multi_in(X, K):
    # 首先沿着X和K的第0维(通道维)遍历
    # 然后使用*将结果列表变成add_n函数的位置参数(positional argument)来进行相加
    return nd.add_n(*[corr2d(x,k) for x, k in zip(X, K)])


def corr2d_multi_in_out(X, K):
    # 对K的第0维遍历,
    # 每次同输入X做互相关计算,所有结果使用stack函数合并在一起.
    return nd.stack(*[corr2d_multi_in(X, k) for k in K])


def corr2d_multi_in_out_11(X,K):
    c_i, h, w = X.shape
    c_o = K.shape[0]
    # 通道为当成特征维
    # 将高和宽上的元素当成数据样本
    X = X.reshape((c_i,h*w))
    K = K.reshape((c_o,c_i))
    Y = nd.dot(K,X) #全连接层的矩阵乘法
    return Y.reshape((c_o, h, w))


if __name__ == "__main__":
    # # 2通道输入数据
    # X = nd.array([[[0, 1, 2],[3, 4, 5],[6, 7, 8]],
    #                         [[1, 2, 3],[4, 5, 6],[7, 8, 9]]])
    
    
    # K = nd.array([[[0,1],[2,3]],[[1,2],[3,4]]])
    # K = nd.stack(K, K+1, K+2)
    # # 3输出通道,2输入通道,2行2列
    # print(K.shape)

    # # 卷积层的多通道输出
    # # 每个输出通道上的结果由卷积核在该输出通道上的核数组与整个输入数组计算而来
    # print(corr2d_multi_in_out(X, K))

    X = nd.random.uniform(shape=(3,3,3))
    K = nd.random.uniform(shape=(2,3,1,1))
    Y1 = corr2d_multi_in_out_11(X,K)
    Y2 = corr2d_multi_in_out(X,K)

    print((Y1-Y2).norm().asscalar() <1e-6)

结果True

参考:

动手学深度学习第5.4章节

相关文章

  • mxnet:1×1卷积层

    1.定义 1×1卷积层就是卷积窗口形状为1×1(kh=kw=1)的多通道卷积层. 由于使用了最小窗口,1×1卷积层...

  • mxnet:为什么1×1卷积层可以代替全连接层

    全连接层的作用是,可以将卷积得到的局部特征连接起来,综合考虑整个图像。当1*1卷积层的channel个数等于全连接...

  • 7.cnn

    1.卷积神经网络详解 2.卷积神经网络简介 卷积神经网络由一个或多个卷积层和顶端的全连通层(也可以使用1x1的卷积...

  • 深度学习 | 特殊卷积的作用

    1.1*1卷积 1*1的卷积核的作用一: 那么1×1卷积核有什么作用呢,如果当前层和下一层都只有一个通道那么1×1...

  • LeNet和其他进阶卷积神经网络

    1. 卷积神经网络 卷积神经网络就是含卷积层的网络。 2. LeNet模型 LeNet分为卷积层块和全连接层块两个...

  • 卷积神经网络

    参考博客: 卷积神经网络_(1)卷积层和池化层学习 - outthinker - 博客园 卷积神经网络(CNN)模...

  • cnn-cs231n随手记

    cnn笔记提要 输入层 卷积层(特征提取输入大小:W1 * H1 * D1指定超参数:K:卷积层深度 F:感受野(...

  • 1X1卷积核的理解和应用(NIN块)

    作用:1.1×1卷积层在实现全卷积神经网络中经常用到,即使用1*1的卷积层替换到全连接层,这样可以不限制输入图片大...

  • [图像算法]-从LeNet到VGG,看卷积+池化串联的网络结构

    01-LeNet5   LeNet5【1】有3个卷积层,2个池化层,2个全连接层。卷积层的卷积核都为55,stri...

  • pytorch框架学习(8)——nn网络层

    @[toc] 1. 卷积层 1.2 1d/2d/3d卷积 卷积运算:卷积核在输入信号(图像)上滑动,相应位置上进行...

网友评论

      本文标题:mxnet:1×1卷积层

      本文链接:https://www.haomeiwen.com/subject/kawfwhtx.html