TensorFlow / maschinelles Lernen

Hallo Gemeinde,

hat sich von Euch schon mal jemand mit TensorFlow (maschinelles Lernen) beschäftigt und es per IP-Symcon ansprechen können ?

Mir schwebt testweise folgendes vor:

Nur hänge ich dabei, wie von meinem Rechner auf TensorFlow zuzugreifen. Notwendig sei eine FFI-Extension ( GitHub - dstogov/php-ffi: PHP Foreign Function Interface ), aber wie und wo ist diese zu installieren ?

Sinnvoll könnte maschinelles Lernen in mancherlei Hinsicht sein (z.B. Mustererkennung von Cameras, sich wiederholende Abläufe erlernen etc.)

Eure eventuellen Erfahrungen / Ideen / Gedanken dazu würden mich interessieren …

Gruß

André

Wir haben Tensorflow im Test für Objekterkennung.
Allerdings in Verbindung mit Node-Red.
Ist schlichtweg ein tolles Stück Software

Arbeitet TensorFlow komplett lokal oder wird Docker „nur“ als Interface zum Internet-Service genutzt?

TensorFlow arbeitet lokal. FFI wird jedoch (wahrscheinlich) erst mit PHP 7.4 verfügbar sein. Somit kannst du es darüber noch nicht nutzen. (PHP 7.4 kommt Dez. 2019)

paresy

Hmmm, schade eigentlich …

Dann ein anderer Weg: es gibt noch ein Repository Namens PHP-ML ( GitHub - php-ai/php-ml: PHP-ML - Machine Learning library for PHP )

Das setzt jedoch eine Installation per Composer voraus und dazu reicht es bei mir nicht ganz :wink: Müsste man da zuerst ein 2. PHP installieren ? Composer verlangt eine PHP.exe zur Versionsprüfung. Hat das schon mal jemand gemacht ? Oder gibt es andere Ideen ? Vielleicht einen include_path ?

VG André

… habe PHP-ML etwas unkonventionell installieren können (Workaround über ein unsauber installiertes PHP 7.2 und Composer)

Für Interessierte hier das Testscript mit Anleitung im Header:

<?

/*//////////////////////////////////////////////////////////////////////////////
PHP Artificial Intelligence                                                 2019
--------------------------------------------------------------------------------
Ziel:       Installation in IP-Symcon

GitHub:     https://github.com/php-ai

Problem:    die Verzeichnisse liegen nur als Composer-Installationen vor
            die Abhängigkeiten können nicht manuell erstellt werden
			
Workaround: php-ml-master installiert in ein frisches PHP 7.2 per Composer
--------------------------------------------------------------------------------

Vorgehen:

Quelle: https://windows.php.net/download (Achtung PHP 7.2 nehmen !!!)

--> Download php-7.2.14-nts-Win32-VC15-x64.zip
--> unter D:/ entpacken
--> Achtung: PHP ist so unsauber installiert, aber ich benötige die Version und Struktur nur für Composer !

Quelle: https://github.com/php-ai/php-ml

--> Download php-ml-master.zip
--> unter D:/php-ml-master entpacken

Quelle: https://getcomposer.org/download/

--> Download Composer-Setup.exe
--> Start mit Verweis auf D:/PHP

CMD aufrufen

--> Composer testen: "Composer Diagnose"  
--> wenn OK weiter

--> in Verzeichnis wechseln: "cd D:/php-ml-master"

--> Composer in diesem Verzeichnis starten und php-ml-master installieren: "Composer Install"

Kopieren

--> gesamtes Verzeichnis D:/php-ml-master nach IP-Symcon/scripts/php-ml-master kopieren

Testen

--> siehe unten

/*//////////////////////////////////////////////////////////////////////////////

require_once __DIR__ . '/php-ml-master/vendor/autoload.php';

use Phpml\Classification\KNearestNeighbors;

$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];
$labels = ['a', 'a', 'a', 'b', 'b', 'b'];

$classifier = new KNearestNeighbors();
$classifier->train($samples, $labels);

echo $classifier->predict([3, 2]);
// return 'b'

echo ("

");

// Correlation /////////////////////////////////////////////////////////////////

use Phpml\Math\Statistic\Correlation;

$x = [43, 21, 25, 42, 57, 59];
$y = [99, 65, 79, 75, 87, 82];

echo Correlation::pearson($x, $y);
// return 0.549

echo ("

");

// Mean ////////////////////////////////////////////////////////////////////////

use Phpml\Math\Statistic\Mean;

echo Mean::arithmetic([2, 5]);
// return 3.5

echo ("

");

echo Mean::arithmetic([0.5, 0.5, 1.5, 2.5, 3.5]);
// return 1.7

echo ("

");

// Median //////////////////////////////////////////////////////////////////////

//use Phpml\Math\Statistic\Mean;

echo Mean::median([5, 2, 6, 1, 3, 4]);
// return 3.5

echo ("

");

echo Mean::median([5, 2, 6, 1, 3]);
// return 3

echo ("

");

?>

Gruß

André