有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

指向最后一个对象的java对象列表

我一直在寻找类似的问题,但找不到答案(或者我没有键入正确的关键字)

我正在使用这个Java kohonen神经网络库:JKNNL

我正在从我的主类实例化一个神经网络(DefaultNetwork类)。网络中有神经元(Kohoneneuron类)和一系列权值。在网络的构造器中,有一个for循环,用于实例化具有随机权重的Kohoneneuron对象数组。问题是在循环结束时,所有神经元都具有相同的权重(与最后一个实例化的对象相同)。所有的神经元似乎只引用一个对象。我做错了什么? 我尝试使用动态列表,并将实例分为声明和实例。似乎什么都不管用

以下是我在主课上的电话:

MatrixTopology topology = new MatrixTopology(65,10);
      double[] maxWeight = //MAX WEIGHT INIT
      DefaultNetwork network = new DefaultNetwork(33,maxWeight,topology);

      System.out.println("====== NETWORK RANDOM CREATION - FROM MAIN ======== : \n" + network ); //THIS IS WHERE IT GETS WRONG

以下是我正在呼叫的DefaultNetwork构造函数:

public DefaultNetwork(int weightNumber, double[] maxWeight, TopologyModel topology) {
    this.topology = topology;
    int numberOfNeurons = topology.getNumbersOfNeurons(); //650 : Check !
    neuronList = new KohonenNeuron[numberOfNeurons]; //List of 650 : Check ! 
    for (int i=0; i<numberOfNeurons; i++){

        neuronList[i] = new KohonenNeuron(weightNumber,maxWeight,null) ;

        System.out.println("FROM DEFAULT NETWORK CLASS (random init!!) \n");
        System.out.println("neuron " + i +": " + neuronList[i] + " \n"); 
    }
}

在这一点上,在每次迭代中,它都会打印出一个具有不同权重的神经元。。 但是,在调试中,我看到每次迭代,所有神经元都会取最后一个实例化神经元的权重

这是我打电话给的Kohoneneuron承包商:

 public KohonenNeuron(int weightNumber, double[] maxWeight, ActivationFunctionModel activationFunction){
    if(weightNumber == maxWeight.length){
        Random rand = new Random();
        weight = new double[weightNumber];
        for(int i=0; i< weightNumber; i++){
            weight[i] = rand.nextDouble() * maxWeight[i];
        }
    }
    this.activationFunction = activationFunction;
}

当我运行代码时:

=======网络随机创建-从主节点==============: 1号神经元:[839.7982035619445207.3469810016878,296.903872440716,203.372709884246469.36732048088726,692.607537085506,425.4782925339686,[…] 2号神经元:[839.7982035619445,207.3469810016878,296.903872440716,203.372709884246469.36732048088726,692.607537085506,425.4782925339686,[…] . . . 神经元编号649:[839.7982035619445,207.3469810016878,296.903872440716,203.372709884246469.36732048088726,692.607537085506,425.4782925339686,[…]

正如你所见,所有的神经元都有相同的权重

我希望我能很好地解释这个问题。如果有人知道为什么要这样做,以及我如何修复它,我将非常感谢他们


共 (0) 个答案