Postanowiłem pogawędzić z prostymi koncepcjami z udziałem sieci neuronowych w Javie oraz w adaptacji nieco bezużytecznego kodu, który znalazłem na forum, udało mi się stworzyć bardzo prosty model dla typowego początkującego użytkownika. symulacja XOR:Konfiguracja sieci neuronowej java
public class MainApp {
public static void main (String [] args) {
Neuron xor = new Neuron(0.5f);
Neuron left = new Neuron(1.5f);
Neuron right = new Neuron(0.5f);
left.setWeight(-1.0f);
right.setWeight(1.0f);
xor.connect(left, right);
for (String val : args) {
Neuron op = new Neuron(0.0f);
op.setWeight(Boolean.parseBoolean(val));
left.connect(op);
right.connect(op);
}
xor.fire();
System.out.println("Result: " + xor.isFired());
}
}
public class Neuron {
private ArrayList inputs;
private float weight;
private float threshhold;
private boolean fired;
public Neuron (float t) {
threshhold = t;
fired = false;
inputs = new ArrayList();
}
public void connect (Neuron ... ns) {
for (Neuron n : ns) inputs.add(n);
}
public void setWeight (float newWeight) {
weight = newWeight;
}
public void setWeight (boolean newWeight) {
weight = newWeight ? 1.0f : 0.0f;
}
public float getWeight() {
return weight;
}
public float fire() {
if (inputs.size() > 0) {
float totalWeight = 0.0f;
for (Neuron n : inputs) {
n.fire();
totalWeight += (n.isFired()) ? n.getWeight() : 0.0f;
}
fired = totalWeight > threshhold;
return totalWeight;
}
else if (weight != 0.0f) {
fired = weight > threshhold;
return weight;
}
else {
return 0.0f;
}
}
public boolean isFired() {
return fired;
}
}
w moim głównym klasy I utworzeniu prostą symulację w modelowaniu Jeff Heaton w schemacie:
jednak chciałem zapewnić moją implementację klasy neuronu cor rect .. Przetestowałem już wszystkie możliwe dane wejściowe ([true true], [true false], [false true], [false false]) i wszystkie przeszły moją ręczną weryfikację. Dodatkowo, ponieważ ten program akceptuje dane wejściowe jako argumenty, zdaje się również przechodzić ręczną weryfikację dla danych wejściowych, takich jak [true false false], [true true false], itp.
Czy jednak pod względem koncepcyjnym, czy ta implementacja byłaby poprawna? ? Albo jak mogę go ulepszyć, zanim rozpocznę dalszy rozwój i badania tego tematu?
Dziękujemy!
Wystarczy zapisać pamięci w większych aplikacji, które posiadają niezbędne CPU, może lepiej byłoby dodać szybkość zaniku, którego wartość może być zdefiniowana w drugim konstruktora – user2425429