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é

Hey!

Ich dachte mir, ich häng mich mal an diesen Thread hier dran, statt einen neuen aufzumachen.
Mich treibt nämlich seit einigen Tagen der Gedanke um, dass es doch wirklich super wäre, wenn IPS wirklich smarte Entscheidungen träfen könnte. Klar ist es super, wenn ein Bewegungsmelder in Abhängigkeit von Helligkeit und Tageszeit das Licht einschaltet, aber den Titel „smart“ verdient es ja dennoch nur bedingt.
Da IPS ja ohnehin schon alles mögliche loggen kann, bietet sich meiner Meinung nach eine super Möglichkeit zum Training. Ich würde mir z.B. wünschen, dass anhand von immer wieder (händisch) getätigten Schaltvorgängen IPS mit der Zeit lernt, wann ich meist welche Szene starte und das Licht wie dimme, sodass es dann nach einiger Zeit wirklich smart z.B. das Licht bzw. ganze Szenen schalten kann.
@paresy Gibt es eurerseits irgendwelche Pläne so etwas nativ in IPS zu integrieren? :slight_smile:

Viele Grüße,
Claus

Leider nichts zeitnahes - obwohl wenn mich das Thema sehr interessiert. Ich hatte auch schon mal geschaut, ob man dies als PHP Modul über passende ML Bibliotheken machen kann, aber bisher fehlte die Zeit genauer rein zu schauen.

paesy

Ich muss gestehen, ich wüsste spontan auch noch nicht, wie eine konkrete Umsetzung aussehen könnte, da das ganze ja doch recht komplex ist und viele Faktoren da reinspielen können, aber dennoch fasziniert mich der Gedanke des letztendlichen Nutzens wie auch die an sich vorhandene technische Machbarkeit gleichermaßen.
Ich würde mich auf jeden Fall super freuen, wenn IPS das eines Tages bieten würde. :slight_smile:

Hallo in die Runde,
ich will das Thema nochmal nach oben bringen, da ich eine PHP Bibliothek brauche, die mit eine Zeitreihenprognose für meinen Hausverbrauch macht. Damit will ich prognosebasiertes Nachladen meines PV Akkus über Tibber realisieren, wenn im Winter die PV Leistung nicht ausreicht.
PHP-ML scheint aktuell nicht mehr verfügbar, jedenfalls wurde es aus dem Github Repository entfernt. Im Reository des Nachfolgers findet sich der Hinweis, dass da die Entwicklung erst beginnen soll. Ich bin dann auf RubixML gestoßen, was viel mächtiger ist, allerdings gibt es da für Sequence Learning wie es für Zeitreihen benötigt wird auch noch keine Lösung.
Kennt jemand PHP Bibliotheken, die noch supportet werden und mit denen man eine Zeitreihenprognose machen kann. In IPS sollten diese auch irgendwie einbindbar sein.