MNIST神经网络结构不明确



我正在尝试复制一个经过训练的神经网络,以检测图像中是否有一个0-3位数与另一个混淆图像。我下面的论文列出了相应的体系结构:

一个输入神经元28×56和一个输出神经元的神经网络为接受过这项任务的训练。输入值在−0.5(黑色)之间编码。+1.5(白色)该神经网络由一阶检测组成池化层有400个检测神经元,池化成100个单元(即我们将不重叠的4个检测单元组相加)。一个第二层检测池层有400个检测神经元到前一层的100维输出,以及活动都汇集到代表深度网络的单个单元上输出。正例(图像中的0-3位)被指定为目标值100和反例的目标值为0。的神经网络被训练成最小的均方误差目标值及其输出。

我的主要疑问是,在这种情况下,他们所说的检测神经元是指过滤器还是单个标准的ReLU神经元。此外,如果平均滤波器,当它们被设计用于2x2矩阵时,如何将它们应用于第二层的100维输出。

参考:

Montavon, G。,巴赫,年代,粘合剂,A。,Samek, W。,,m . ller, K.(2015)。用Deep Taylor解释非线性分类决策分解。出来了。https://doi.org/10.1016/j.patcog.2016.11.008。

特别是第4.C节

谢谢你的帮助!

我最好的猜测是这样的(代码未测试-只是粗略的PyTorch):

from torch import nn
class Model(nn.Module):
def __init__(self):
super().__init__()
self.layer1 = nn.Sequential(
nn.Flatten(),  # Flatten row-wise into a 1D sequence
nn.Linear(28 * 56, 400),  # Linear layer with 400 outputs.
nn.AvgPool1D(4, 4),  # Sum pool to 100 outputs.
)
self.layer2 = nn.Sequential(
nn.Linear(100, 400),  # Linear layer with 400 outputs.
nn.AdaptiveAvgPool1D(1), # Sum pool to 1 output.
)
def forward(self, x):
return self.layer2(self.layer1(x))

但总的来说,我同意你的帖子的评论,这里有一些语言问题。

最新更新