Encog Hopfield网络培训

时间:2013-05-20 11:31:24

标签: neural-network encog

我正在尝试识别图像中的单个字符。 图像数据已清除,并且可以看到清晰明确的字母。

因此,当我将trainigset添加到hopfield网络时,它变得非常棒,因为我只添加2。 一旦我添加更多,它训练的模式开始变得模糊和模糊。

我该如何预防?

培训网络:

public void trainNetwork() {
        network.reset();
        System.out.println("Training hopfield network");
        long startTimeLong = System.nanoTime();
        for (double[] ds : trainingInput) {
            network.addPattern(doubleArrayToBiPolarNeuralData(ds));
        }
        long endTimeLong = System.nanoTime();
        double durationInSec = (double) ((endTimeLong - startTimeLong) / Math.pow(10, 9));
        System.out.println("Finished training network in: " + durationInSec);
    }

    private BiPolarNeuralData doubleArrayToBiPolarNeuralData(double[] data) {
        BiPolarNeuralData patternData = new BiPolarNeuralData(neuroncount);
        if (data.length != neuroncount) {
            IndexOutOfBoundsException e = new IndexOutOfBoundsException("the size of the traingsinputs is different from the amount of input neurons");
            logger.error(e.getMessage(), e);
            throw e;
        }
        patternData.setData(data);
        return patternData;
    }

训练2个字符时的结果:

Cycles until stable(max 100): 1, result=
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
      OOOOOOOOOOO                          ->         OOOOOOOOOOO                       
    OOOOOOOOOOOOOOO                        ->       OOOOOOOOOOOOOOO                     
   OOOOOOOOOOOOOOOOO                       ->      OOOOOOOOOOOOOOOOO                    
  OOOOOOOOOOOOOOOOOO                       ->     OOOOOOOOOOOOOOOOOO                    
  OOOOOOO  OOOOOOOOO                       ->     OOOOOOO  OOOOOOOOO                    
  OOOOO      OOOOOOO                       ->     OOOOO      OOOOOOO                    
  OOOOO      OOOOOOO                       ->     OOOOO      OOOOOOO                    
              OOOOOO                       ->                 OOOOOO                    
          OOOOOOOOOO                       ->             OOOOOOOOOO                    
     OOOOOOOOOOOOOOO                       ->        OOOOOOOOOOOOOOO                    
   OOOOOOOOOOOOOOOOO                       ->      OOOOOOOOOOOOOOOOO                    
  OOOOOOOOOOOOOOOOOO                       ->     OOOOOOOOOOOOOOOOOO                    
 OOOOOOOOO    OOOOOO                       ->    OOOOOOOOO    OOOOOO                    
 OOOOOOO     OOOOOOO                       ->    OOOOOOO     OOOOOOO                    
 OOOOOO      OOOOOOO                       ->    OOOOOO      OOOOOOO                    
 OOOOOOO    OOOOOOOO                       ->    OOOOOOO    OOOOOOOO                    
 OOOOOOOOOOOOOOOOOOOO                      ->    OOOOOOOOOOOOOOOOOOOO                   
 OOOOOOOOOOOOOOOOOOOO                      ->    OOOOOOOOOOOOOOOOOOOO                   
 OOOOOOOOOOOOOOOOOOOO                      ->    OOOOOOOOOOOOOOOOOOOO                   
  OOOOOOOOOOOOOOOOOOO                      ->     OOOOOOOOOOOOOOOOOOO                   
   OOOOOOOOO  OOOOOOO                      ->      OOOOOOOOO  OOOOOOO                   
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           

训练所有角色时的结果:

Cycles until stable(max 100): 3, result=
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
      OOOOOOOOOOO                          ->      OOOOOOOOOOOOOOO                      
    OOOOOOOOOOOOOOO                        ->      OOOOOOOOOOOOOOOO                     
   OOOOOOOOOOOOOOOOO                       ->      OOOOOOOOOOOOOOOOO                    
  OOOOOOOOOOOOOOOOOO                       ->     OOOOOOOOOOOOOOOOOO                    
  OOOOOOOOO OOOOOOOOO                      ->      OOOOOOOOOOOOOOOO                     
 OOOOOOOO     OOOOOOO                      ->      OOOOOO    OOOOOO                     
 OOOOOOO      OOOOOOO                      ->      OOOOOO     OOOOO                     
 OOOOOOO                                   ->      OOOOOO     OOOOO                     
 OOOOOOO                                   ->      OOOOOO     OOOOO                     
 OOOOOO                                    ->      OOOOOO    OOOOOOO                    
 OOOOOO                                    ->      OOOOOO      OOOOO                    
 OOOOOOO                                   ->      OOOOOO     OOOOOO                    
 OOOOOOO                                   ->     OOOOOOO     OOOOOO                    
 OOOOOOO      OOOOOOO                      ->     OOOOOOO     OOOOOO                    
 OOOOOOO      OOOOOOO                      ->     OOOOOOO     OOOOOO                    
 OOOOOOOO    OOOOOOOO                      ->     OOOOOOO    OOOOOOO                    
  OOOOOOOOO OOOOOOOOO                      ->     OOOOOOOOOOOOOOOOOO                    
  OOOOOOOOOOOOOOOOOO                       ->      OOOOOOOOOOOOOOOO                     
   OOOOOOOOOOOOOOOO                        ->      OOOOOOOOOOOOOOOO                     
    OOOOOOOOOOOOOO                         ->       OOOOOOOOOOOOO                       
      OOOOOOOOOOO                          ->        OOOOOOOOO O                        
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           
                                           ->                                           

它总是解析为同一个复合blob。我做错了什么?

1 个答案:

答案 0 :(得分:1)

在给出可接受的错误数量的情况下,可以在跳跃网络中学习的最大模式数量称为其容量。容量是网络中神经元总数的对数的函数,这意味着如果你想要更多模式,你必须增加网络中神经元的数量。 此外,复合斑点称为混合状态(或者有时称为旋转玻璃状态,具体取决于显示的斑点类型)。当Hopfield网络进入起始状态时,它倾向于将自身驱动到本地能量最小值。有时,最小值不是受过训练的模式,而是一种混合了训练中使用的几种模式的状态。通常,这些混合状态具有比训练模式更高的能量,但是如果起始状态更接近混合状态,则它将倾向于将自身驱动到该局部最小值。有时在网络中包含一些噪声可以避免这些局部最小值并使网络达到最接近训练的状态。您可以通过生成随机数来包含噪声,并且只有在该数字超过特定阈值时才执行符号操作。

总之,向网络添加神经元和噪声可以帮助您解决问题。