Essayez d'être aussi bref que possible.
J'ai cette carte : Map<Neuron,Float> connexions. Elle contient un Neuron-Objekt comme Clé et le poids de la connexion comme valeur.
La classe Neuron possède une méthode "getOutput" pour obtenir la valeur de sortie du neurone.
Ce que je veux faire, c'est passer en revue chaque neurone de la carte, calculer neuron.getOutput * connections.get(neuron) et additionner le tout dans une seule variable.
Existe-t-il un moyen élégant de faire cela avec Java-Streams ? Peut-être avec reduce ? J'ai essayé mais je n'ai pas réussi à le faire fonctionner correctement.
inputConnections.keySet().stream().reduce(
0f,
(accumulatedFloat, inputNeuron) -> accumulatedFloat + inputConnections.get(inputNeuron),
Float::sum);
Je suppose que le 0f fait que tout est multiplié par 0.
Ce code semble fonctionner, mais j'aimerais une solution plus élégante.
AtomicReference<Float> tmp = new AtomicReference<>(0f);
inputConnections.keySet().forEach(inputNeuron -> {
tmp.updateAndGet(v -> new Float((float) (v + inputNeuron.getOutput() * inputConnections.get(inputNeuron))));
});