神经网络java代码测试
时间: 2023-08-01 21:06:05 浏览: 44
很高兴为你提供帮助!以下是一个简单的神经网络Java代码示例,你可以用它来进行测试:
```java
import java.util.Random;
public class NeuralNetwork {
private double[][] weights;
private double[] biases;
// Constructor
public NeuralNetwork(int inputSize, int hiddenSize, int outputSize) {
Random rand = new Random();
weights = new double[][] {
new double[inputSize],
new double[hiddenSize],
new double[outputSize]
};
for (int i = 0; i < inputSize; i++) {
for (int j = 0; j < hiddenSize; j++) {
weights[0][j] = rand.nextDouble();
}
}
for (int i = 0; i < hiddenSize; i++) {
for (int j = 0; j < outputSize; j++) {
weights[1][j] = rand.nextDouble();
}
}
biases = new double[] {rand.nextDouble(), rand.nextDouble(), rand.nextDouble()};
}
public double[] predict(double[] input) {
double[] hidden = new double[weights[0].length];
double[] output = new double[weights[1].length];
// Calculate hidden layer
for (int i = 0; i < hidden.length; i++) {
double sum = 0.0;
for (int j = 0; j < input.length; j++) {
sum += input[j] * weights[0][i];
}
hidden[i] = sigmoid(sum + biases[0]);
}
// Calculate output layer
for (int i = 0; i < output.length; i++) {
double sum = 0.0;
for (int j = 0; j < hidden.length; j++) {
sum += hidden[j] * weights[1][i];
}
output[i] = sigmoid(sum + biases[1]);
}
return output;
}
private double sigmoid(double x) {
return 1.0 / (1.0 + Math.exp(-x));
}
// Main method for testing
public static void main(String[] args) {
NeuralNetwork net = new NeuralNetwork(2, 3, 1);
double[] input = new double[] {1.0, 0.0};
double[] output = net.predict(input);
System.out.println(output[0]);
}
}
```
该代码实现了一个简单的两层神经网络,包括一个输入层,一个隐藏层和一个输出层。你可以通过调用 `predict` 方法来输入一个长度为2的double数组,该方法将返回一个长度为1的double数组,表示网络的输出。
请注意,这只是一个非常简单的示例,如果你想实现更复杂的神经网络,你需要进行更多的工作,例如实现反向传播算法。