音符分类器的全连接层的输入和输出

数据挖掘 深度学习 美国有线电视新闻网
2021-10-13 16:45:39

我正在尝试制作不同音符类型的对象分类器,但我在理解完全连接的层时遇到了问题。例如,我有一个二值化图像 (WxLxNo.OfImages) 的 3d 数组,我将该数组传递给 conv 层、relu 和池化。很多视频和其他教程都说我使用图像制作了一个矢量,但输入是每个图像、类别还是整个训练数据?我的第二个问题是最后一层应该有多少神经元?它应该是我的训练数据集中的类别数吗?

1个回答

从你的最后一个问题开始:最后的全连接层应该输出你拥有的目标类的数量。然后可以将此输出传递给 softmax,它将范围[0, 1] 之间的值归一化 - 允许将它们解释为概率。

请记住,您使用以下维度进行训练:

[batch_size, height, width, channels]        # channels = 1 (in your case) so is removed

你总是需要batch_size通过你的神经网络来保持向前和向后的循环。通常它设置为None允许模型接受您决定的任何批量大小。

人们所说的“制作向量”的意思是卷积层的输出将是 3D(包括通道),因此在您的情况下是 2D。您需要将它们展平为单个向量。然后流入全连接层的卷积层输出将是:

[batch_size, height * width]         # height and width are those from the final conv layer

根据您的框架,将有一个名为Flattenorview等的层,它为您提供每个图像的矢量,保留batch_size. 这是作为模型结构的一部分执行的,因此在通过模型时应用于所有数据(训练、验证和测试数据)。