Giter Site home page Giter Site logo

php_ai's Introduction

PHP AI - Нейросеть на PHP

Пример реализации простой нейросети на PHP

Для примера класс сети реализован следующим образом: имеется входной слой, промежуточный и выходной. Количество нейронов каждого слоя можно задать в конструкторе.

Можно попытаться изобразить логический оператор И, где принимаются 2 аргумента (0 или 1) и нейросеть выдает ответ.

Запуск c обучением

$ php test.php

Результат

=> Run training...
=> Training success
=> Save Weights...                             
=> Weights saved                               
=> Testing...                                  
=> Input: [0, 0], result: [0.00050500874055015]
=> Input: [1, 0], result: [0.0023971208568645] 
=> Input: [0, 1], result: [0.0034857253613739] 
=> Input: [1, 1], result: [0.99544824644645]  

training

Если закомментировать в файле примера блок обучения, то будет следеющий результат:

=> Testing...                                  
=> Input: [0, 0], result: [0.00050500874055015]
=> Input: [1, 0], result: [0.0023971208568645] 
=> Input: [0, 1], result: [0.0034857253613739] 
=> Input: [1, 1], result: [0.99544824644645]  

training

Обучение

Для обучения используются датасеты с заранее известным значением результата. В данной сети используется обучение путем обратного распространения ошибки.

Пример обучения для имитации логического оператора И

// Создаем нейросеть
$nn = new NeuralNetwork(2, 3, 1, 'storage');
    
// Обучающий датасет
$trainingSet = [
    [[0, 0], [0]],
    [[0, 1], [0]],
    [[1, 0], [0]],
    [[1, 1], [1]],
];

// Количество "эпох"
$epochs = 100000;

// Скорость обучения
$learningRate = 0.5;

for ($i = 0; $i < $epochs; $i++) {
    // Выбираем случайный элемент из датасета
    $trainingData = $trainingSet[array_rand($trainingSet)];
    $inputs       = $trainingData[0];
    $targets      = $trainingData[1];
    $nn->train($inputs, $targets, $learningRate);
}

// Сохраняем натренированные веса
$nn->saveWeights();

Далее при уже обученной сети можно использовать значения сохраненных на этапе обучения весов (метод train() вызывать не требуется)

php_ai's People

Contributors

rsgrinko avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.