
Neuronale Module mit adaptiven nichtlinearen Einschränkungen und effizienten Regularisierungen (Neuromancer) sind eine Open-Source-Bibliothek für differenzierbare Programmierung (DP) zur Lösung parametrischer Einschränkungen, Optimierungsprobleme, physikalischer Systemidentifikation und parametrischer modellbasierter optimaler Steuerelement. Neuromancer ist in Pytorch geschrieben und ermöglicht eine systematische Integration des maschinellen Lernens mit wissenschaftlichem Computer, um End-to-End-differenzierbare Modelle und Algorithmen zu erstellen, die mit Vorwissen und Physik eingebettet sind.
Wir erweitern unsere Beispiele für Energiesysteme mit Lastvorhersagen für Gebäude. Wir präsentieren die Verwendung von Zeitreihenmodellierung und -prognose mithilfe des Datensatzes für kurzfristige Stromlastprognose (Panama-Fallstudie). Wir demonstrieren die Prognosekapanitäten mit einem Transformatormodell, einem neuen Block, der unseren (neuronalen) Blöcken sowie anderen Standardblöcken hinzugefügt wurde. Wir verwenden auch historische Wetterdaten, um die Energievorhersage zu unterstützen.
Kolmogorov-Arnold-Netzwerke (KANS) haben in letzter Zeit als Alternative zu Multilayer-Perceptrons (MLPs) für wissenschaftliches maschinelles Lernen aufmerksam gemacht. Kans können jedoch selbst für relativ kleine Netzwerke teuer sein. Wir haben einen FBKAN -Block (FBPIns) implementiert, um die Domänen -Zerlegungsmethode für Kans zu erhalten, mit der mehrere kleine Kans parallel geschult werden können, um genaue Lösungen für Multiscal -Probleme zu geben.
Neue Colab -Beispiele:
Lastvorhersage
Funktionsnäherung mit Kolgomorov-Arnold-Netzwerken
Einfach rennen
pip install neuromancer
Für die manuelle Installation finden Sie in den Installationsanweisungen
Ein umfangreicher Satz von Tutorials finden Sie im Beispiele -Ordner und den folgenden Tutorials. Interaktive Notebook -Versionen von Beispielen finden Sie in Google Colab! Testen Sie die Neuromancer -Funktionalität, bevor Sie das Repository klonieren und eine Umgebung aufstellen.
Die folgenden Notebooks stellen die Kernabstraktionen der Neuromancer -Bibliothek vor, insbesondere unsere symbolische Programmierschnittstelle und Knotenklassen.
Teil 1: Lineare Regression in Pytorch gegen Neuromancer.
Teil 2: Neuromancer -Syntax -Tutorial: Variablen, Einschränkungen und Ziele.
Teil 3: Neuromancer -Syntax -Tutorial: Module, Knoten und Systemklasse.
Schnelles Beispiel für die Lösung des Problems mit parametrischer Einschränkung der Optimierungsproblem mit Neuromancer, Nutzung unserer symbolischen Programmierschnittstelle, Knoten und Variablen, Blöcken, Slim Library und Elfyloss -Klassen.
# Neuromancer syntax example for constrained optimization
import neuromancer as nm
import torch
# define neural architecture
func = nm . modules . blocks . MLP ( insize = 1 , outsize = 2 ,
linear_map = nm . slim . maps [ 'linear' ],
nonlin = torch . nn . ReLU , hsizes = [ 80 ] * 4 )
# wrap neural net into symbolic representation via the Node class: map(p) -> x
map = nm . system . Node ( func , [ 'p' ], [ 'x' ], name = 'map' )
# define decision variables
x = nm . constraint . variable ( "x" )[:, [ 0 ]]
y = nm . constraint . variable ( "x" )[:, [ 1 ]]
# problem parameters sampled in the dataset
p = nm . constraint . variable ( 'p' )
# define objective function
f = ( 1 - x ) ** 2 + ( y - x ** 2 ) ** 2
obj = f . minimize ( weight = 1.0 )
# define constraints
con_1 = 100. * ( x >= y )
con_2 = 100. * ( x ** 2 + y ** 2 <= p ** 2 )
# create penalty method-based loss function
loss = nm . loss . PenaltyLoss ( objectives = [ obj ], constraints = [ con_1 , con_2 ])
# construct differentiable constrained optimization problem
problem = nm . problem . Problem ( nodes = [ map ], loss = loss )Neuromancer ist so gebaut, dass sie eine Vielzahl von domänenspezifischen Modellierungs- und Steuerungsproblemen anhand seiner Methodenarray angehen. Hier zeigen wir, wie man Gebäudeergiesysteme modelliert und steuert und Lastprognosetechniken anwendet.
Weitere eingehende Berichterstattung über unsere Methoden finden Sie in unserem Abschnitt Allgemeine Tutorials unten.
Mit Neuromancer können Sie eine breite Klasse von parametrischen Optimierungsproblemen formulieren und lösen, die maschinelles Lernen nutzen, um die Lösungen für solche Probleme zu erlernen. Weitere Informationen zur parametrischen Programmierung
Teil 1: Lernen, ein eingeschränktes Optimierungsproblem zu lösen.
Teil 2: Lernen, ein quadratisch beschränktes Optimierungsproblem zu lösen.
Teil 3: Lernen, einen Satz von 2D -eingeschränkten Optimierungsproblemen zu lösen.
Teil 4: Lernen, ein eingeschränktes Optimierungsproblem mit dem projizierten Gradienten zu lösen.
Teil 5: Verwenden von CVXPylayers zur differenzierbaren Projektion auf den polytopischen realisierbaren Satz.
Teil 6: Lernen, mit metrischem Lernen für Operator -Spaltschichten zu optimieren.
Mit Neuromancer können Sie Kontrollrichtlinien für das vollständige Spektrum von weißen/grauen/schwarz-Box-Dynamiksystemen erlernen, die ausgewählten Einschränkungen und objektiven Funktionen unterliegen. Weitere Informationen zur unterschiedlichen Vorhersagekontrolle
Neuromancer ist auf dem neuesten Stand der Technik. Hier präsentieren wir die leistungsstarken Kolgomorov-Arnold-Netzwerke Weitere Informationen zu Kolgomorov-Arnold-Netzwerken
Mit Neuromancer kann man maschinelles Lernen, frühere Physik- und Domänenkenntnisse verwenden, um mathematische und differenzierte Modelle dynamischer Systeme zu konstruieren, da die gemessenen Beobachtungen des Systemverhaltens. Weitere Informationen zu System -ID über neuronale Staatsraummodelle und ODES
Das symbolische Programmierdesign von Neuromancer eignet sich perfekt zum Lösen von Pinns. Weitere Informationen zu Pinns
Neuromancer wurde in Torchsde integriert, um stochastische dynamische Systeme zu verarbeiten. Weitere Informationen zu SDEs
Wir haben Pytorch Lightning integriert, um Code zu optimieren, benutzerdefinierte Trainingslogik zu aktivieren, GPU- und Multi-GPU-Setups zu unterstützen und groß angelegte, speicherintensive Lernaufgaben zu erledigen.
Die Dokumentation für die Bibliothek finden Sie online. Es gibt auch ein Einführungsvideo, das die Kernfunktionen der Bibliothek abdeckt.
Weitere Informationen, einschließlich derjenigen für Entwickler, finden Sie in unserem Entwickler- und Benutzerhandbuch
Wir begrüßen Beiträge und Feedback der Open-Source-Community!
Bitte lesen Sie die Richtlinien für die Entwicklung der Community -Entwicklung, um weitere Informationen zu Beiträgen, Diskussionen und Themen zu erhalten.
Siehe die Versionshinweise, in denen neue Funktionen dokumentiert werden.
Neuromancer wird mit der BSD -Lizenz geliefert. Weitere Informationen finden Sie in der Lizenz.
@article{Neuromancer2023,
title={{NeuroMANCER : Neural Modules with Adaptive Nonlinear Constraints and Efficient Regularizations}},
author={Drgona, Jan and Tuor, Aaron and Koch, James and Shapiro, Madelyn and Jacob, Bruno and Vrabie, Draguna},
Url= {https://github.com/pnnl/neuromancer},
year={2023}
} Aktive Kernentwickler : Jan Drgona, Rahul Birmiwal, Bruno Jacob
Bemerkenswerte Mitwirkende : Aaron Tuor, Madelyn Shapiro, James Koch, Seth Briney, Bo Tang, Ethan King, Elliot Skomski, Zhao Chen, Christian Møldrup Legaard
Wissenschaftliche Berater : Draguna Vrabie, Panos Stinis
Open-Source-Beiträge geleistet von:
Mit Beitragsröcken gemacht.
This research was partially supported by the Mathematics for Artificial Reasoning in Science (MARS) and Data Model Convergence (DMC) initiatives via the Laboratory Directed Research and Development (LDRD) investments at Pacific Northwest National Laboratory (PNNL), by the US Department of Energy, through the Office of Advanced Scientific Computing Research's “Data-Driven Decision Control for Complex Systems (DnC2S)” project, and through the Energy Efficiency and Erneuerbare Energien, Bautechnologienbüro unter der „dynamischen Dekarbonisierung durch autonome physikalische Deep-Lernen und Optimierung des Gebäudebetriebs“ und das „fortschreitende marktfertige marktfertige Bauergiemanagement durch kostengünstige differenzierbare Vorhersagekontrollprojekte“. Dieses Projekt wurde auch vom US -amerikanischen Energieministerium des Advanced Scientific Computing Research im Rahmen der Unsicherheitsquantifizierung für Multifidelity Operator Learning (Molucq) -Projekt (Projekt Nr. 81739) unterstützt. PNNL ist ein Nationallabor mit mehreren Programmen, das vom Battelle Memorial Institute unter Vertragsnummer DE-AC05-76RL0-1830 für das US-Energieministerium (DOE) betrieben wird.