suchen
HeimTechnologie-PeripheriegeräteKIMaschinelles Lernen |. PyTorch Kurzanleitung Teil 1

Maschinelles Lernen |. PyTorch Kurzanleitung Teil 1

Nov 02, 2023 pm 05:25 PM
机器学习pytorch

In den vorherigen Artikeln wurden Funktionsnormalisierung und Tensoren vorgestellt. Als Nächstes werde ich zwei kurze Tutorials zu PyTorch schreiben, in denen hauptsächlich einfache Praktiken von PyTorch vorgestellt werden.

1 Abbildung 1

import torcha = torch.tensor([2, 3, 4])b = torch.tensor([3, 4, 5])print("a + b: ", (a + b).numpy())print("a - b: ", (a - b).numpy())print("a * b: ", (a * b).numpy())print("a / b: ", (a / b).numpy())

(1) Beginnen Sie mit der Hauptfunktion Torch.manual_seed(42) wird verwendet, um den Startwert des Zufallszahlengenerators festzulegen, um sicherzustellen, dass die Folge der generierten Zufallszahlen jedes Mal dieselbe ist run. Diese Funktion akzeptiert eine Ganzzahl. Parameter dienen als Startwerte und können in Szenarien verwendet werden, die Zufallszahlen erfordern, wie z. B. das Training neuronaler Netze, um die Wiederholbarkeit der Ergebnisse sicherzustellen =False) wird verwendet, um eine Menge von Werten mit gleichem Abstand innerhalb des Intervalls zu generieren. Diese Funktion akzeptiert drei Parameter: Startwert, Endwert und Anzahl der Elemente und gibt einen Tensor zurück, der die angegebene Anzahl von Werten mit gleichem Abstand enthält

(3) Interne Implementierung von build_model1:

torch.nn.Sequential(torch.nn.Linear(1, 1, Bias=False)) verwendet den Konstruktor der Klasse nn.Sequential und übergibt die lineare Ebene als ein Parameter und gibt ein neuronales Netzwerkmodell zurück, das die lineare Schicht enthält.

build_model2 hat die gleiche Funktion wie build_model1 und verwendet die Methode add_module(), um ein Submodul mit dem Namen linear hinzuzufügen (reductinotallow='mean') definiert die Verlustfunktion; 机器学习 | PyTorch简明教程上篇Verwenden Sie optim.SGD(model.parameters(), lr=0,01, momentum=0,9), um den Stochastic Gradient Descent (SGD)-Optimierungsalgorithmus zu implementieren

Setzen Sie den Trainingssatz ein durch die Batch-Größe Aufteilen, Schleife 100 Mal

(7) Als nächstes kommt die Trainingsfunktion train, die zum Trainieren eines neuronalen Netzwerkmodells verwendet wird. Diese Funktion akzeptiert insbesondere die folgenden Parameter:

model: normalerweise neuronales Netzwerkmodell eine von der Instanz der Klasse nn.Module geerbte;

    Verlustfunktion, die zur Berechnung der Differenz zwischen dem vorhergesagten Wert und dem wahren Wert des Modells verwendet wird;
  • Optimierer: zur Aktualisierung der Parameter des Modells;
  • x: Eingabedaten, ist ein Tensor vom Typ Torch.Tensor;

y: Zieldaten, ist ein Tensor vom Typ Torch.Tensor;

(8) Zug ist eine häufig verwendete Methode im PyTorch-Trainingsprozess. und seine Schritte sind wie folgt:

Setzen Sie das Modell in den Trainingsmodus, das heißt, aktivieren Sie spezielle Vorgänge, die während des Trainings verwendet werden, wie z.

    Übergeben Sie die Eingabedaten an das Modell, berechnen Sie den vorhergesagten Wert des Modells und übergeben Sie den vorhergesagten Wert und die Zieldaten an die Verlustfunktion, um den Verlustwert zu berechnen.
  • Backpropagieren Sie den Verlustwert und berechnen Sie den Gradienten der Modellparameter ;
  • Verwenden Sie den Optimierer, um die Modellparameter zu aktualisieren. Transformieren Sie den Verlustwert.
  • (9) print("Round = %d, loss value = %s" % (i + 1, Kosten / num_batches)) Drucken Sie abschließend die aktuelle Trainingsrunde und den Verlustwert aus:
a + b:[5 7 9]a - b:[-1 -1 -1]a * b:[ 6 12 20]a / b:[0.6666667 0.750.8]
  • 3. Die logistische Regression verwendet eine Kurve, um die Flugbahn einer Reihe diskreter Punkte ungefähr darzustellen, wie in der Abbildung gezeigt :
  • Abbildung 2
    • import torchfrom torch import optimdef build_model1():return torch.nn.Sequential(torch.nn.Linear(1, 1, bias=False))def build_model2():model = torch.nn.Sequential()model.add_module("linear", torch.nn.Linear(1, 1, bias=False))return modeldef train(model, loss, optimizer, x, y):model.train()optimizer.zero_grad()fx = model.forward(x.view(len(x), 1)).squeeze()output = loss.forward(fx, y)output.backward()optimizer.step()return output.item()def main():torch.manual_seed(42)X = torch.linspace(-1, 1, 101, requires_grad=False)Y = 2 * X + torch.randn(X.size()) * 0.33print("X: ", X.numpy(), ", Y: ", Y.numpy())model = build_model1()loss = torch.nn.MSELoss(reductinotallow='mean')optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)batch_size = 10for i in range(100):cost = 0.num_batches = len(X) // batch_sizefor k in range(num_batches):start, end = k * batch_size, (k + 1) * batch_sizecost += train(model, loss, optimizer, X[start:end], Y[start:end])print("Epoch = %d, cost = %s" % (i + 1, cost / num_batches))w = next(model.parameters()).dataprint("w = %.2f" % w.numpy())if __name__ == "__main__":main()
    • (1) Beginnen Sie mit der Hauptfunktion, Torch.manual_seed(42) wird oben vorgestellt, überspringen Sie sie hier;
    • (2) Load_mnist dient dazu, den Mnist-Datensatz selbst herunterzuladen, und trX und teX als Eingabedaten zurückgeben, trY und teY sind Etikettendaten;
    • (3) interne Implementierung von build_model: Torch.nn.Sequential(torch.nn.Linear(input_dim, Output_dim, Bias=False)) wird verwendet Erstellen Sie ein neuronales Netzwerkmodell, das eine lineare Schicht enthält. Die Anzahl der Eingabemerkmale des Modells ist input_dim, die Anzahl der Ausgabemerkmale ist output_dim und die lineare Schicht hat keinen Bias-Term, wobei n_classes = 10 bedeutet, dass 10 Kategorien ausgegeben werden. Nach dem Umschreiben: (3) Interne Implementierung von build_model: Verwenden Sie Torch.nn.Sequential (Torch.nn.Linear (Input_dim, Output_dim, Bias = False)), um ein neuronales Netzwerkmodell zu erstellen, das eine lineare Ebene enthält input_dim. Die Anzahl der Ausgabe-Features ist Output_dim, und die lineare Ebene hat keinen Bias-Term. Unter anderem bedeutet n_classes=10 die Ausgabe von 10 Kategorien (Modell .parameters(), lr=0,01, Impuls=0,9) kann den Optimierungsalgorithmus Stochastic Gradient Descent (SGD) implementieren
    • (6) Nach jeder Trainingsrunde muss die Vorhersagefunktion ausgeführt werden, um Vorhersagen zu treffen. Diese Funktion akzeptiert zwei Parameter: model (das trainierte Modell) und teX (die Daten, die vorhergesagt werden müssen). Die spezifischen Schritte sind wie folgt:
      • model.eval()模型设置为评估模式,这意味着模型将不会进行训练,而是仅用于推理;
      • 将output转换为NumPy数组,并使用argmax()方法获取每个样本的预测类别;

      (7)print("Epoch %d, cost = %f, acc = %.2f%%" % (i + 1, cost / num_batches, 100. * np.mean(predY == teY)))最后打印当前训练的轮次,损失值和acc,上述的代码输出如下(执行很快,但是准确率偏低):

      ...Epoch 91, cost = 0.252863, acc = 92.52%Epoch 92, cost = 0.252717, acc = 92.51%Epoch 93, cost = 0.252573, acc = 92.50%Epoch 94, cost = 0.252431, acc = 92.50%Epoch 95, cost = 0.252291, acc = 92.52%Epoch 96, cost = 0.252153, acc = 92.52%Epoch 97, cost = 0.252016, acc = 92.51%Epoch 98, cost = 0.251882, acc = 92.51%Epoch 99, cost = 0.251749, acc = 92.51%Epoch 100, cost = 0.251617, acc = 92.51%

      4、神经网络

      一个经典的LeNet网络,用于对字符进行分类,如图:

      机器学习 | PyTorch简明教程上篇图3

      • 定义一个多层的神经网络
      • 对数据集的预处理并准备作为网络的输入
      • 将数据输入到网络
      • 计算网络的损失
      • 反向传播,计算梯度
      import numpy as npimport torchfrom torch import optimfrom data_util import load_mnistdef build_model(input_dim, output_dim):return torch.nn.Sequential(torch.nn.Linear(input_dim, 512, bias=False),torch.nn.Sigmoid(),torch.nn.Linear(512, output_dim, bias=False))def train(model, loss, optimizer, x_val, y_val):model.train()optimizer.zero_grad()fx = model.forward(x_val)output = loss.forward(fx, y_val)output.backward()optimizer.step()return output.item()def predict(model, x_val):model.eval()output = model.forward(x_val)return output.data.numpy().argmax(axis=1)def main():torch.manual_seed(42)trX, teX, trY, teY = load_mnist(notallow=False)trX = torch.from_numpy(trX).float()teX = torch.from_numpy(teX).float()trY = torch.tensor(trY)n_examples, n_features = trX.size()n_classes = 10model = build_model(n_features, n_classes)loss = torch.nn.CrossEntropyLoss(reductinotallow='mean')optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)batch_size = 100for i in range(100):cost = 0.num_batches = n_examples // batch_sizefor k in range(num_batches):start, end = k * batch_size, (k + 1) * batch_sizecost += train(model, loss, optimizer,trX[start:end], trY[start:end])predY = predict(model, teX)print("Epoch %d, cost = %f, acc = %.2f%%"% (i + 1, cost / num_batches, 100. * np.mean(predY == teY)))if __name__ == "__main__":main()

      (1)以上这段神经网络的代码与逻辑回归没有太多的差异,区别的地方是build_model,这里是构建一个包含两个线性层和一个Sigmoid激活函数的神经网络模型,该模型包含一个输入特征数量为input_dim,输出特征数量为output_dim的线性层,一个Sigmoid激活函数,以及一个输入特征数量为512,输出特征数量为output_dim的线性层;

      (2)print("Epoch %d, cost = %f, acc = %.2f%%" % (i + 1, cost / num_batches, 100. * np.mean(predY == teY)))最后打印当前训练的轮次,损失值和acc,上述的代码输入如下(执行时间比逻辑回归要长,但是准确率要高很多):

      第91个时期,费用= 0.054484,准确率= 97.58%第92个时期,费用= 0.053753,准确率= 97.56%第93个时期,费用= 0.053036,准确率= 97.60%第94个时期,费用= 0.052332,准确率= 97.61%第95个时期,费用= 0.051641,准确率= 97.63%第96个时期,费用= 0.050964,准确率= 97.66%第97个时期,费用= 0.050298,准确率= 97.66%第98个时期,费用= 0.049645,准确率= 97.67%第99个时期,费用= 0.049003,准确率= 97.67%第100个时期,费用= 0.048373,准确率= 97.68%


    Das obige ist der detaillierte Inhalt vonMaschinelles Lernen |. PyTorch Kurzanleitung Teil 1. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme
    Dieser Artikel ist reproduziert unter:51CTO.COM. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
    Lesen des AI-Index 2025: Ist AI Ihr Freund, Feind oder Co-Pilot?Lesen des AI-Index 2025: Ist AI Ihr Freund, Feind oder Co-Pilot?Apr 11, 2025 pm 12:13 PM

    Der Bericht des Stanford University Institute for Human-orientierte künstliche Intelligenz bietet einen guten Überblick über die laufende Revolution der künstlichen Intelligenz. Interpretieren wir es in vier einfachen Konzepten: Erkenntnis (verstehen, was geschieht), Wertschätzung (Sehenswürdigkeiten), Akzeptanz (Gesichtsherausforderungen) und Verantwortung (finden Sie unsere Verantwortlichkeiten). Kognition: Künstliche Intelligenz ist überall und entwickelt sich schnell Wir müssen uns sehr bewusst sein, wie schnell künstliche Intelligenz entwickelt und ausbreitet. Künstliche Intelligenzsysteme verbessern sich ständig und erzielen hervorragende Ergebnisse bei mathematischen und komplexen Denktests, und erst vor einem Jahr haben sie in diesen Tests kläglich gescheitert. Stellen Sie sich vor, KI zu lösen komplexe Codierungsprobleme oder wissenschaftliche Probleme auf Graduiertenebene-seit 2023-

    Erste Schritte mit Meta Lama 3.2 - Analytics VidhyaErste Schritte mit Meta Lama 3.2 - Analytics VidhyaApr 11, 2025 pm 12:04 PM

    Metas Lama 3.2: Ein Sprung nach vorne in der multimodalen und mobilen KI Meta hat kürzlich Lama 3.2 vorgestellt, ein bedeutender Fortschritt in der KI mit leistungsstarken Sichtfunktionen und leichten Textmodellen, die für mobile Geräte optimiert sind. Aufbau auf dem Erfolg o

    AV -Bytes: META ' S Lama 3.2, Googles Gemini 1.5 und mehrAV -Bytes: META ' S Lama 3.2, Googles Gemini 1.5 und mehrApr 11, 2025 pm 12:01 PM

    Die KI -Landschaft dieser Woche: Ein Wirbelsturm von Fortschritten, ethischen Überlegungen und regulatorischen Debatten. Hauptakteure wie OpenAI, Google, Meta und Microsoft haben einen Strom von Updates veröffentlicht, von bahnbrechenden neuen Modellen bis hin zu entscheidenden Verschiebungen in LE

    Die menschlichen Kosten für das Gespräch mit Maschinen: Kann sich ein Chatbot wirklich darum kümmern?Die menschlichen Kosten für das Gespräch mit Maschinen: Kann sich ein Chatbot wirklich darum kümmern?Apr 11, 2025 pm 12:00 PM

    Die beruhigende Illusion der Verbindung: Blühen wir in unseren Beziehungen zur KI wirklich auf? Diese Frage stellte den optimistischen Ton des "Fortschritts -Menschen mit AI) des MIT Media Lab in Frage. Während die Veranstaltung moderne EDG präsentierte

    Verständnis der Scipy Library in PythonVerständnis der Scipy Library in PythonApr 11, 2025 am 11:57 AM

    Einführung Stellen Sie sich vor, Sie sind ein Wissenschaftler oder Ingenieur, der sich mit komplexen Problemen befasst - Differentialgleichungen, Optimierungsherausforderungen oder Fourier -Analysen. Pythons Benutzerfreundlichkeit und Grafikfunktionen sind ansprechend, aber diese Aufgaben erfordern leistungsstarke Tools

    3 Methoden zum Ausführen von LLAMA 3.2 - Analytics Vidhya3 Methoden zum Ausführen von LLAMA 3.2 - Analytics VidhyaApr 11, 2025 am 11:56 AM

    METAs Lama 3.2: Ein multimodales KI -Kraftpaket Das neueste multimodale Modell von META, Lama 3.2, stellt einen erheblichen Fortschritt in der KI dar, das ein verbessertes Sprachverständnis, eine verbesserte Genauigkeit und die überlegenen Funktionen der Textgenerierung bietet. Seine Fähigkeit t

    Automatisierung von Datenqualitätsprüfungen mit DagsterAutomatisierung von Datenqualitätsprüfungen mit DagsterApr 11, 2025 am 11:44 AM

    Datenqualitätssicherung: Automatisieren von Schecks mit Dagster und großen Erwartungen Die Aufrechterhaltung einer hohen Datenqualität ist für datengesteuerte Unternehmen von entscheidender Bedeutung. Wenn Datenvolumina und Quellen zunehmen, wird die manuelle Qualitätskontrolle ineffizient und anfällig für Fehler.

    Haben Mainframes eine Rolle in der KI -Ära?Haben Mainframes eine Rolle in der KI -Ära?Apr 11, 2025 am 11:42 AM

    Mainframes: Die unbesungenen Helden der KI -Revolution Während die Server bei allgemeinen Anwendungen und mehreren Kunden übernommen werden, werden Mainframes für hochvolumige, missionskritische Aufgaben erstellt. Diese leistungsstarken Systeme sind häufig in Heavil gefunden

    See all articles

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Wie man alles in Myrise freischaltet
    3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Herunterladen der Mac-Version des Atom-Editors

    Herunterladen der Mac-Version des Atom-Editors

    Der beliebteste Open-Source-Editor

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    MinGW – Minimalistisches GNU für Windows

    MinGW – Minimalistisches GNU für Windows

    Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

    MantisBT

    MantisBT

    Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.