2

我正在尝试从图像中识别单个字符。图像数据已被清理,并且有一个清晰可见的字母。

因此,当我将训练集添加到 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。我究竟做错了什么?

4

1 回答 1

1

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

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

于 2013-09-03T01:18:10.633 回答