Drift Bewertung: fresh_modelTrainingsbewertung: (roter Punkt) Retrain (Retrain)Bewertungsüberblick
Trainingsbewertung: Retrain (Retrain)
Lernverhalten: overfit gesundes Lernverhalten (42.4 % Epochenausnutzung)
Einstellhinweise:
Trainingsdaten wurden auswendig gelernt statt allgemeine Muster zu erkennen (Fehler auf unbekannten Testdaten 81.9 % höher als auf Trainingsdaten): Trainings-/Testaufteilung von 80/20 auf 70/30 ändern und/oder Lernrate (aiControl->aiConLearnRate) um Faktor 2 reduzieren damit das Netz langsamer und allgemeiner lernt
Große Datenmenge (8894 Datensätze gesamt): wenn saisonale Effekte die Prognosequalität beeinträchtigen, Training auf die neuesten Datensätze begrenzen (z.B. aiControl->aiConTrainLimit=4400) um das Modell auf aktuelle Verbrauchsmuster zu fokussieren
Rauschen Bewertung: merkliches Rauschen, Interpretation mit Vorsicht (borderline)
Drift Bewertung: -
Empfehlung für Retrain: keineletztes KI-Training: 24.05.2026 23:16:53 / Laufzeit in Sekunden: 515
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 79.79 ms
Alpha: 0.7
Verbrauchernummer Wärmepumpe: 08
Bewertungsüberblick
Trainingsbewertung: Retrain (Retrain)
Lernverhalten: very_early sehr früh konvergiert (0.4 % Epochenausnutzung)
Einstellhinweise:
Lernrate zu hoch: Lernrate (aiControl->aiConLearnRate) um Faktor 5-10 reduzieren (z.B. von 0.01 auf 0.001-0.002)
Architektur prüfen: Netz möglicherweise zu klein für die Datenmenge, Hidden-Layer-Neuronen (aiControl->aiConHiddenLayers) erhöhen (z.B. 50-25 -> 64-32)
Training zu einem anderen Zeitpunkt erneut starten: die zufällige Gewichtsinitialisierung beim Start hat das Ergebnis hier stark dominiert, ein neuer Trainingsstart erzeugt automatisch eine andere Initialisierung und führt meist zu einem deutlich besseren Ergebnis
Architektur möglicherweise zu komplex für die Datenmenge: Verhältnis Trainingsdaten zu Netzparametern beträgt nur 5.7 (Zielwert: 8–20) - das Netz hat mehr Freiheitsgrade als die Daten zuverlässig füllen können; kleinere Architektur wie z.B. 14-8 versuchen (aiControl->aiConHiddenLayers)
Große Datenmenge (9701 Datensätze gesamt): wenn saisonale Effekte die Prognosequalität beeinträchtigen, Training auf die neuesten Datensätze begrenzen (z.B. aiControl->aiConTrainLimit=4800) um das Modell auf aktuelle Verbrauchsmuster zu fokussieren
Rauschen Bewertung: merkliches Rauschen, Interpretation mit Vorsicht (borderline)
Drift Bewertung: low
Empfehlung für Retrain: keine keine
Zitat von: DS_Starter am 27 Mai 2026, 16:41:34War ein Vertippen oder besser eine vergessene 0 (siehe Codebeispiel Oben).Zitat(aiControl->aiConLearnRate) soll ich auch um Faktor 2 reduzieren, dies habe ich schon gemacht.0.01 um Faktor 2 reduzieren -> verkleinern auf z.B. 0.005, 0,02 wäre vergrößern
Bin von 0.01 auf 0.025, bekomme aber immernoch den Hinweis.
Zitat(aiControl->aiConLearnRate) soll ich auch um Faktor 2 reduzieren, dies habe ich schon gemacht.0.01 um Faktor 2 reduzieren -> verkleinern auf z.B. 0.005, 0,02 wäre vergrößern
Bin von 0.01 auf 0.025, bekomme aber immernoch den Hinweis.
Zitat von: Shadow3561 am 27 Mai 2026, 16:34:40Wie änder ich die Trainings-/Testaufteilung von 80/20 auf 70/30?

aiConActivate=1 aiConProfile=v1_common_active_pv aiConAlpha=0.7 aiTrainStart=7 aiStorageDuration=3000 aiTreesPV=3 aiConHiddenLayers=14-8 aiConLearnRate=0.0025 aiConTrainStart=1:2 aiConBitFailLimit=0.34Duplicate keys not allowed, at character offset 3021 (before "": {\n "d...") at ./FHEM/70_ENPHASE.pm line 858.
2026.05.27 16:09:12 1: DEBUG>{
"info": "Last available status data shown. Live stream not enabled. Enable using /ivp/livedata/stream/ API",
"connection": {
"mqtt_state": "connected",
"prov_state": "configured",
"auth_state": "ok",
"sc_stream": "disabled",
"sc_debug": "disabled"
},
"meters": {
"last_update": 1779890999,
"soc": 100,
"main_relay_state": 1,
"gen_relay_state": 5,
"backup_bat_mode": 1,
"backup_soc": 0,
"is_split_phase": 0,
"phase_count": 3,
"enc_agg_soc": 100,
"enc_agg_energy": 7000,
"acb_agg_soc": 0,
"acb_agg_energy": 0,
"pv": {
"agg_p_mw": 5824065,
"agg_s_mva": 5860684,
"agg_p_ph_a_mw": 1949668,
"agg_p_ph_b_mw": 1914553,
"agg_p_ph_c_mw": 1959844,
"agg_s_ph_a_mva": 1964327,
"agg_s_ph_b_mva": 1921832,
"agg_s_ph_c_mva": 1974524
},
"storage": {
"agg_p_mw": 838000,
"agg_s_mva": 809747,
"agg_p_ph_a_mw": 519000,
"agg_p_ph_b_mw": 319000,
"agg_p_ph_c_mw": 0,
"agg_s_ph_a_mva": 507483,
"agg_s_ph_b_mva": 313427,
"agg_s_ph_c_mva": -11165
},
"grid": {
"agg_p_mw": 230039,
"agg_s_mva": 458264,
"agg_p_ph_a_mw": -238840,
"agg_p_ph_b_mw": 798732,
"agg_p_ph_c_mw": -329855,
"agg_s_ph_a_mva": -325690,
"agg_s_ph_b_mva": 1179779,
"agg_s_ph_c_mva": -395826
},
"load": {
"agg_p_mw": 6892104,
"agg_s_mva": 7128695,
"agg_p_ph_a_mw": 2229828,
"agg_p_ph_b_mw": 3032285,
"agg_p_ph_c_mw": 1629989,
"agg_s_ph_a_mva": 2146120,
"agg_s_ph_b_mva": 3415038,
"agg_s_ph_c_mva": 1567533
},
"generator": {
"agg_p_mw": 0,
"agg_s_mva": 0,
"agg_p_ph_a_mw": 0,
"agg_p_ph_b_mw": 0,
"agg_p_ph_c_mw": 0,
"agg_s_ph_a_mva": 0,
"agg_s_ph_b_mva": 0,
"agg_s_ph_c_mva": 0
}
},
"tasks": {
"task_id": 418737689,
"timestamp": 1779890786
},
"counters": {
"main_CfgLoad": 2,
"main_CfgChanged": 1,
"main_taskUpdate": 6215,
"MqttClient_publish": 900,
"MqttClient_respond": 12432,
"MqttClient_msgarrvd": 6216,
"MqttClient_reconnect": 1,
"MqttClient_create": 28,
"MqttClient_setCallbacks": 28,
"MqttClient_connect": 28,
"MqttClient_subscribe": 28,
"SSL_Keys_Create": 28,
"sc_SendStreamCtrl": 3,
"rest_Status": 124335
},
"dry_contacts": {
"": {
"dry_contact_id": "",
"dry_contact_type": "",
"dry_contact_load_name": "",
"dry_contact_status": 0
},
"": {
"dry_contact_id": "",
"dry_contact_type": "",
"dry_contact_load_name": "",
"dry_contact_status": 0
},
"": {
"dry_contact_id": "",
"dry_contact_type": "",
"dry_contact_load_name": "",
"dry_contact_status": 0
},
"": {
"dry_contact_id": "",
"dry_contact_type": "",
"dry_contact_load_name": "",
"dry_contact_status": 0
}
}
}Ändere in 70_ENPHASE.pm die JSON-Initialisierung an Zeile 858 so, dass doppelte Keys erlaubt werden.
Ersetze:
$decoded_json = JSON->new->utf8->decode($json_bytes);
durch:
my $json = JSON->new->utf8;
$json->allow_dupkeys(1) if $json->can('allow_dupkeys');
$decoded_json = $json->decode($json_bytes);
Dasselbe ggf. auch an Zeile 1161 ändern.
Grund: Dein Enphase liefert unter dry_contacts mehrfach denselben Key "". Das ist eigentlich ungültig bzw. problematisches JSON. Dein Perl/JSON-Update verwendet jetzt offenbar einen strengeren Parser, der das nicht mehr stillschweigend akzeptiert.wait 0:5,300 2026-05-27 11:25:06 Device Bewohner
2026-05-27 10:45:04 cmd 1
2026-05-27 10:45:04 cmd_event Bewohner
2026-05-27 10:45:04 cmd_nr 1
2026-05-27 11:25:06 e_Bewohner_STATE present
2026-05-27 11:25:06 e_Quadbox_STATE off
2026-05-27 10:44:48 mode enabled
2026-05-27 10:45:04 state cmd_1