将双向量或数组作为 neuroph.setInput() 参数传递

passing Double Vector or Array as neuroph.setInput() paramater

我正在研究 Neuroph ANN 框架。在训练神经网络后,使用以下方法测试新输入时存在这一点(该库是开源的,因此我能够参考我导入的库中的实际实现1) :

/**
 * Sets network input. Input is an array of double values.
 *
 * @param inputVector network input as double array
 */
public void setInput(double... inputVector) throws VectorSizeMismatchException {
    if (inputVector.length != inputNeurons.size()) {
        throw new VectorSizeMismatchException("Input vector size does not match network input dimension!");
    }

    int i = 0;
    for (Neuron neuron : this.inputNeurons) {
        neuron.setInput(inputVector[i]); // set input to the coresponding neuron
        i++;
    }

}

遗憾的是,我很难通过参数。起初,我会成功传递每个用逗号分隔的 Double 值。但随后我的输入大小增加到 400。我尝试将输入作为双向量和双数组(盲拍)传递,但我收到错误消息,无法使用此类参数解析该方法。

这是我这样做的代码片段:

public String predict(String features)
{
    // load the saved network
    NeuralNetwork neuralNetwork = NeuralNetwork.createFromFile(nnet_path);
    // set network input

    String[] feature_pieces = features.split(" ");

    System.out.println("\nINPUT FEATURES: " + Arrays.toString(feature_pieces));

    Double[] feature_pieces_double = new Double[feature_pieces.length];

    for (int i = 0; i < feature_pieces.length; i++) {
        feature_pieces_double[i] = Double.parseDouble(feature_pieces[i]);

    }

    Vector<Double> features_vector = new Vector<>(Arrays.asList(feature_pieces_double));

    //neuralNetwork.setInput(feature_pieces_double); //TODO

    neuralNetwork.setInput(features_vector); //TODO
.
.
.

请帮我看看我做错了什么。

作为参考,here is the javadoc 部分提到了此方法。 (奇怪的是,javadoc 没有说明以 Array 作为输入的重载方法)

P.s。有足够信誉的人,请添加更多有用的标签

您不需要矢量:

double[] feature_pieces_double = new double[feature_pieces.length];

for (int i = 0; i < feature_pieces.length; i++) {
    feature_pieces_double[i] = Double.parseDouble(feature_pieces[i]);
}

neuralNetwork.setInput(feature_pieces_double);

但请确保使用 double 而不是 Double

下面方法中的args是一个数组:

public void method(double... args)

等同于

public void method(double[] args)

(除了使用 ... 之外,您还可以直接在方法调用中指定以逗号分隔的参数:method(1.0, 2.0))。