使神经网络具有分层输出更好吗?

时间:2018-01-13 07:07:42

标签: machine-learning neural-network deep-learning artificial-intelligence

我对神经网络很陌生,最近我建立了神经网络,用于车辆牌照中的数字分类。它有3层:1个输入层,16 * 24(382个神经元)数字图像,150 dpi,1个隐藏层(199个神经元),带有S形激活功能,1个softmax输出层(10个神经元),每个数字0到9个。 / p>

我正在尝试扩展我的神经网络,以便对车牌中的字母进行分类。但我担心如果我只是简单地在输出中添加更多类,例如在分类中添加10个字母,总共20个类,神经网络很难将每个类的特征分开。而且,我认为当输入数字和神经网络错误地归类为具有最大概率的字母之一时,它可能会引起问题,即使所有数字输出的概率之和超过那个。

所以我想知道是否有可能以下列方式构建分层神经网络:

有3个神经网络:'Item','Number','Letter'

  1. '项'神经网络分类输入是数字还是字母。

  2. 如果'Item'神经网络将输入分类为数字(字母),则输入通过'Number'('Letter')神经网络。

  3. 从Number(Letter)神经网络返回最终输出。

  4. 每个网络的学习机制如下:

    1. '项目'神经网络学习所有数字和字母的图像。所以有2个输出。
    2. 'Number'('Letter')神经网络只学习数字(字母)的图像。
    3. 我应该选择哪种方法来获得更好的分类?只需添加10个类或使用上述方法构建分层神经网络?

2 个答案:

答案 0 :(得分:2)

我强烈建议只培训一个神经网络,其中包含您希望能够检测到的所有类型图像的输出(因此您希望能够识别每个字母的一个输出节点,以及一个输出节点对于您希望能够识别的每个数字。)

这主要是因为识别数字和识别字母实际上是完全相同的任务。直观地,您可以理解具有多个层的训练有素的神经网络,以便在多个步骤中执行识别。在隐藏层中,它可以学习检测各种简单的原始形状(例如,隐藏层可以学习检测垂直线,水平线,对角线,某些类型的简单弯曲形状等)。然后,在隐藏层和输出层之间的权重中,它可以学习如何将这些原始形状的多个组合识别为特定输出类(例如,大致在正确位置的垂直和水平线可以被识别为大写字母{ {1}})。

那些"事物"它在隐藏层中学习将与数字和字母完全相关(可以指示L的垂直线也可以在与其他形状组合时指示L。因此,有一些有用的东西需要学习,这些内容与“任务”相关,并且如果它可以在所有内容中学习,那么它可能更容易学习这些内容。同一个网络。

另请参阅this answer I gave to a related question in the past

答案 1 :(得分:0)

  

我正在尝试扩展我的神经网络,以便对车牌中的字母进行分类。但是我担心如果我只是简单地在输出中添加更多的类,例如在分类中添加10个字母,总共20个类,神经网络很难将每个类的特征分开。

你远离它成为问题的地方。 ImageNet有1000个类,通常在一个网络中完成。请参阅AlexNet paper。如果您想了解有关CNN的更多信息,请查看chapter 2 of "Analysis and Optimization of Convolutional Neural Network Architectures"。当你在它上面时,请参阅第4章的层次分类。你可以阅读摘要......好吧,摘要吧。