Я пытаюсь реализовать что-то вроде этого https://www.youtube.com/watch?v=Fp9kzoAxsA4, который представляет собой GANN (нейронная сеть с генетическим алгоритмом) с использованием библиотеки DL4J.
Генетические переменные обучения:
- Гены: веса нейронной сети существ
- Фитнес: общее пройденное расстояние.
Слои нейронной сети для каждого существа:
- входной слой: 5 датчиков, которые либо
1
, если в направлении датчика есть стена, либо0
, если нет. - выходной слой: линейный вывод, который соответствует углу существа.
Это мой метод createBrain
для объекта существа:
private void createBrain() {
Layer inputLayer = new DenseLayer.Builder()
// 5 eye sensors
.nIn(5)
.nOut(5)
// How do I initialize custom weights using creature genes (this.genes)?
// .weightInit(WeightInit.ZERO)
.activation(Activation.RELU)
.build();
Layer outputLayer = new OutputLayer.Builder()
.nIn(5)
.nOut(1)
.activation(Activation.IDENTITY)
.lossFunction(LossFunctions.LossFunction.MSE)
.build();
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
.seed(6)
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.iterations(1)
.learningRate(0.006)
.updater(Updater.NESTEROVS).momentum(0.9)
.list()
.layer(0,inputLayer)
.layer(1, outputLayer)
.pretrain(false).backprop(true)
.build();
this.brain = new MultiLayerNetwork(conf);
this.brain.init();
}
Если это может помочь, я нажал на этот репозиторий https://github.com/kareem3d/GeneticNeuralNetwork
А это класс Creature https://github.com/kareem3d/GeneticNeuralNetwork/blob/master/src/main/java/com/mycompany/gaan/Creature.java
Я изучаю машинное обучение, поэтому, если вы увидите какие-либо очевидные ошибки, сообщите мне об этом, спасибо :)