Simple and efficient neural network implementation for Go
Optimized for genetic algorithms and neuroevolution
🇬🇧 English
|
|
|
go get github.com/Sekerator/neural-network
package main
import (
nn "github.com/Sekerator/neural-network"
)
func main() {
// Create neural network
network := nn.NewNeuralNetwork()
// Initialize: 3 inputs → 2 hidden layers (5, 3 neurons) → 2 outputs
network.Init(3, 2, []int{5, 3}, 2)
// Process inputs
network.SetInputs([]float32{0.5, 0.8, -0.2})
// Get outputs
for _, neuron := range network.OutputNeurons {
println(neuron.Result)
}
}
Method | Description | Parameters |
---|---|---|
NewNeuralNetwork() |
Create new network | - |
Init(...) |
Initialize topology | inputs, layers, neurons[], outputs |
SetInputs(...) |
Set input values | []float32 |
Calculate() |
Forward propagation | - |
Method | Description | Parameters |
---|---|---|
Mutate(...) |
Random mutations | chance, range |
Clone() |
Deep copy | - |
Crossover(...) |
Combine networks | *NeuralNetwork |
Method | Description | Parameters |
---|---|---|
Save(...) |
Export to JSON | filename |
Load(...) |
Import from JSON | filename |
Complete XOR solution using genetic algorithm:
cd examples/xor
go run main.go
Basic network operations demo:
cd examples/simple
go run main.go
graph LR
I1[Input 1] --> H1[Hidden 1]
I2[Input 2] --> H1
I1 --> H2[Hidden 2]
I2 --> H2
H1 --> O[Output]
H2 --> O
NeuralNetwork
- Main container managing topologyNeuron
- Computational unit with bias and activationSynapse
- Weighted connection between neurons
Perfect for:
- Game AI - NPC behavior, decision making
- Robotics - Controller evolution
- Optimization - Genetic algorithm problems
- Research - Neuroevolution experiments
- Education - Learning neural networks
- 🎯 Uses
float32
for memory efficiency - 🚀 Optimized forward propagation
- 📦 Minimal memory allocations
- 🔧 Zero dependencies
🇷🇺 Русский
|
|
|
go get github.com/Sekerator/neural-network
package main
import (
nn "github.com/Sekerator/neural-network"
)
func main() {
// Создаём нейронную сеть
network := nn.NewNeuralNetwork()
// Инициализация: 3 входа → 2 скрытых слоя (5, 3 нейрона) → 2 выхода
network.Init(3, 2, []int{5, 3}, 2)
// Обработка входов
network.SetInputs([]float32{0.5, 0.8, -0.2})
// Получение выходов
for _, neuron := range network.OutputNeurons {
println(neuron.Result)
}
}
Метод | Описание | Параметры |
---|---|---|
NewNeuralNetwork() |
Создать новую сеть | - |
Init(...) |
Инициализировать топологию | входы, слои, нейроны[], выходы |
SetInputs(...) |
Установить входные значения | []float32 |
Calculate() |
Прямое распространение | - |
Метод | Описание | Параметры |
---|---|---|
Mutate(...) |
Случайные мутации | вероятность, диапазон |
Clone() |
Глубокая копия | - |
Crossover(...) |
Скрещивание сетей | *NeuralNetwork |
Метод | Описание | Параметры |
---|---|---|
Save(...) |
Экспорт в JSON | имя файла |
Load(...) |
Импорт из JSON | имя файла |
Полное решение XOR с использованием генетического алгоритма:
cd examples/xor
go run main.go
Демонстрация базовых операций:
cd examples/simple
go run main.go
graph LR
I1[Вход 1] --> H1[Скрытый 1]
I2[Вход 2] --> H1
I1 --> H2[Скрытый 2]
I2 --> H2
H1 --> O[Выход]
H2 --> O
NeuralNetwork
- Основной контейнер управления топологиейNeuron
- Вычислительная единица с bias и активациейSynapse
- Взвешенная связь между нейронами
Идеально подходит для:
- Игровой ИИ - Поведение NPC, принятие решений
- Робототехника - Эволюция контроллеров
- Оптимизация - Задачи генетических алгоритмов
- Исследования - Эксперименты с нейроэволюцией
- Образование - Изучение нейронных сетей
- 🎯 Использует
float32
для эффективности памяти - 🚀 Оптимизированное прямое распространение
- 📦 Минимальные аллокации памяти
- 🔧 Без зависимостей
🇨🇳 中文
|
|
|
go get github.com/Sekerator/neural-network
package main
import (
nn "github.com/Sekerator/neural-network"
)
func main() {
// 创建神经网络
network := nn.NewNeuralNetwork()
// 初始化:3个输入 → 2个隐藏层(5、3个神经元)→ 2个输出
network.Init(3, 2, []int{5, 3}, 2)
// 处理输入
network.SetInputs([]float32{0.5, 0.8, -0.2})
// 获取输出
for _, neuron := range network.OutputNeurons {
println(neuron.Result)
}
}
方法 | 描述 | 参数 |
---|---|---|
NewNeuralNetwork() |
创建新网络 | - |
Init(...) |
初始化拓扑 | 输入, 层数, 神经元[], 输出 |
SetInputs(...) |
设置输入值 | []float32 |
Calculate() |
前向传播 | - |
方法 | 描述 | 参数 |
---|---|---|
Mutate(...) |
随机突变 | 概率, 范围 |
Clone() |
深度复制 | - |
Crossover(...) |
交叉网络 | *NeuralNetwork |
方法 | 描述 | 参数 |
---|---|---|
Save(...) |
导出到JSON | 文件名 |
Load(...) |
从JSON导入 | 文件名 |
使用遗传算法的完整XOR解决方案:
cd examples/xor
go run main.go
基本操作演示:
cd examples/simple
go run main.go
graph LR
I1[输入1] --> H1[隐藏1]
I2[输入2] --> H1
I1 --> H2[隐藏2]
I2 --> H2
H1 --> O[输出]
H2 --> O
NeuralNetwork
- 管理拓扑的主容器Neuron
- 带偏置和激活的计算单元Synapse
- 神经元之间的加权连接
完美适用于:
- 游戏AI - NPC行为、决策制定
- 机器人 - 控制器进化
- 优化 - 遗传算法问题
- 研究 - 神经进化实验
- 教育 - 学习神经网络
- 🎯 使用
float32
提高内存效率 - 🚀 优化的前向传播
- 📦 最小内存分配
- 🔧 零依赖