Skip to content

Sekerator/neural-network

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Neural Network Go Library

Go Version License Platform

Simple and efficient neural network implementation for Go
Optimized for genetic algorithms and neuroevolution


🇬🇧  English   

✨ Features

🏗️ Architecture

  • Fully connected feedforward networks
  • Arbitrary topology support
  • Tanh activation function
  • Zero external dependencies

🧬 Genetic Algorithms

  • Built-in mutation support
  • Network crossover
  • Deep cloning
  • Population evolution

💾 Persistence

  • JSON serialization
  • Save/Load models
  • Complete topology preservation
  • Human-readable format

🚀 Quick Start

Installation

go get github.com/Sekerator/neural-network

Basic Usage

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)
    }
}

📖 API Reference

Core Methods

Method Description Parameters
NewNeuralNetwork() Create new network -
Init(...) Initialize topology inputs, layers, neurons[], outputs
SetInputs(...) Set input values []float32
Calculate() Forward propagation -

Genetic Operations

Method Description Parameters
Mutate(...) Random mutations chance, range
Clone() Deep copy -
Crossover(...) Combine networks *NeuralNetwork

Persistence

Method Description Parameters
Save(...) Export to JSON filename
Load(...) Import from JSON filename

🎯 Examples

XOR Problem

Complete XOR solution using genetic algorithm:

cd examples/xor
go run main.go

Simple Network

Basic network operations demo:

cd examples/simple
go run main.go

🏛️ Architecture

graph LR
    I1[Input 1] --> H1[Hidden 1]
    I2[Input 2] --> H1
    I1 --> H2[Hidden 2]
    I2 --> H2
    H1 --> O[Output]
    H2 --> O
Loading

Components

  • NeuralNetwork - Main container managing topology
  • Neuron - Computational unit with bias and activation
  • Synapse - Weighted connection between neurons

🎮 Applications

Perfect for:

  • Game AI - NPC behavior, decision making
  • Robotics - Controller evolution
  • Optimization - Genetic algorithm problems
  • Research - Neuroevolution experiments
  • Education - Learning neural networks

⚡ Performance

  • 🎯 Uses float32 for memory efficiency
  • 🚀 Optimized forward propagation
  • 📦 Minimal memory allocations
  • 🔧 Zero dependencies
🇷🇺  Русский   

✨ Возможности

🏗️ Архитектура

  • Полносвязные сети прямого распространения
  • Поддержка произвольной топологии
  • Функция активации tanh
  • Без внешних зависимостей

🧬 Генетические алгоритмы

  • Встроенная поддержка мутаций
  • Кроссовер сетей
  • Глубокое клонирование
  • Эволюция популяции

💾 Сохранение

  • Сериализация в JSON
  • Сохранение/загрузка моделей
  • Полное сохранение топологии
  • Человекочитаемый формат

🚀 Быстрый старт

Установка

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)
    }
}

📖 Справочник API

Основные методы

Метод Описание Параметры
NewNeuralNetwork() Создать новую сеть -
Init(...) Инициализировать топологию входы, слои, нейроны[], выходы
SetInputs(...) Установить входные значения []float32
Calculate() Прямое распространение -

Генетические операции

Метод Описание Параметры
Mutate(...) Случайные мутации вероятность, диапазон
Clone() Глубокая копия -
Crossover(...) Скрещивание сетей *NeuralNetwork

Сохранение

Метод Описание Параметры
Save(...) Экспорт в JSON имя файла
Load(...) Импорт из JSON имя файла

🎯 Примеры

Задача XOR

Полное решение 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
Loading

Компоненты

  • NeuralNetwork - Основной контейнер управления топологией
  • Neuron - Вычислительная единица с bias и активацией
  • Synapse - Взвешенная связь между нейронами

🎮 Применение

Идеально подходит для:

  • Игровой ИИ - Поведение NPC, принятие решений
  • Робототехника - Эволюция контроллеров
  • Оптимизация - Задачи генетических алгоритмов
  • Исследования - Эксперименты с нейроэволюцией
  • Образование - Изучение нейронных сетей

⚡ Производительность

  • 🎯 Использует float32 для эффективности памяти
  • 🚀 Оптимизированное прямое распространение
  • 📦 Минимальные аллокации памяти
  • 🔧 Без зависимостей
🇨🇳  中文   

✨ 特性

🏗️ 架构

  • 全连接前馈网络
  • 支持任意拓扑
  • Tanh激活函数
  • 零外部依赖

🧬 遗传算法

  • 内置突变支持
  • 网络交叉
  • 深度克隆
  • 种群进化

💾 持久化

  • JSON序列化
  • 保存/加载模型
  • 完整拓扑保存
  • 人类可读格式

🚀 快速开始

安装

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)
    }
}

📖 API 参考

核心方法

方法 描述 参数
NewNeuralNetwork() 创建新网络 -
Init(...) 初始化拓扑 输入, 层数, 神经元[], 输出
SetInputs(...) 设置输入值 []float32
Calculate() 前向传播 -

遗传操作

方法 描述 参数
Mutate(...) 随机突变 概率, 范围
Clone() 深度复制 -
Crossover(...) 交叉网络 *NeuralNetwork

持久化

方法 描述 参数
Save(...) 导出到JSON 文件名
Load(...) 从JSON导入 文件名

🎯 示例

XOR问题

使用遗传算法的完整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
Loading

组件

  • NeuralNetwork - 管理拓扑的主容器
  • Neuron - 带偏置和激活的计算单元
  • Synapse - 神经元之间的加权连接

🎮 应用

完美适用于:

  • 游戏AI - NPC行为、决策制定
  • 机器人 - 控制器进化
  • 优化 - 遗传算法问题
  • 研究 - 神经进化实验
  • 教育 - 学习神经网络

⚡ 性能

  • 🎯 使用float32提高内存效率
  • 🚀 优化的前向传播
  • 📦 最小内存分配
  • 🔧 零依赖

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

👤 Author

Created with ❤️ by Sekerator


GitHub

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages