首页 > 解决方案 > 折叠连续的线性层

问题描述

我有一个具有 3 个连续线性层(卷积)的神经网络,中间没有激活函数。在训练网络并获得权重后,我想将所有 3 层折叠为一层。

当每一层都有不同的内核大小和步幅时,如何在实践中做到这一点?

图层如下:

  1. 具有 3x3 内核、5 个输入通道和 5 个输出通道(大小为 3x3x5x5 的张量)的卷积层,步幅为 1,填充“相同”
  2. 具有 5x5 内核、5 个输入通道和 50 个输出通道(大小为 5x5x5x50 的张量)的卷积层,步幅为 2,填充“相同”
  3. 具有 3x3 内核、50 个输入通道和 50 个输出通道(大小为 3x3x50x50 的张量)的卷积层,步长为 1,填充“相同”

提前致谢

标签: pythonmachine-learningneural-networkconvolutionconvolutional-neural-network

解决方案


置换第一层内核的维度,使得输入通道处于“小批量”维度,输出通道处于“通道”维度。应用第二层,就好像那是一个图像。然后将第三层应用于结果。最终结果是“折叠”层的内核。

使用“完整”填充所有这些操作。如果这大致正确(除了填充),请尝试修复填充(可能它应该在最后一次操作中“相同”)。


推荐阅读