Heim  >  Artikel  >  Backend-Entwicklung  >  Tensorflow-Grundlagen (Open-Source-Softwarebibliothek für maschinelles Lernen)

Tensorflow-Grundlagen (Open-Source-Softwarebibliothek für maschinelles Lernen)

angryTom
angryTomnach vorne
2019-11-29 14:53:003438Durchsuche

Tensorflow-Grundlagen (Open-Source-Softwarebibliothek für maschinelles Lernen)

Hinweis: Das Beispiel in diesem Artikel verwendet Python Version 3.5.6 und Tensorflow Version 2.0

Einführung

Tensorflow ist Das von Google eingeführte Open-Source-Artefakt für maschinelles Lernen verfügt über eine gute Sprachunterstützung für Python, unterstützt Hardware wie CPU, GPU und Google TPU und verfügt bereits über eine Vielzahl von Modellen und Algorithmen. Derzeit wird Tensorflow in vielen Bereichen des maschinellen Lernens und Deep Learnings wie Textverarbeitung, Spracherkennung und Bilderkennung häufig eingesetzt.

Das Grundgerüst

ist in drei Schichten unterteilt: Anwendungsschicht, Schnittstellenschicht und Kernschicht

Empfohlen: " Python-Tutorial

Anwendungsschicht

bietet Trainingsbibliotheken und Vorhersagen für maschinelles Lernen Bibliotheken und Programmierumgebungen für Sprachen wie Python, C++ und Java, ähnlich dem Frontend eines Websystems, realisieren hauptsächlich die Erstellung von Berechnungsdiagrammen.

Schnittstellenschicht

kapselt Tensorflow-Funktionsmodule, um Aufrufe von anderen Sprachplattformen zu erleichtern.

Kernschicht

Der wichtigste Teil, einschließlich der Geräteschicht, der Netzwerkschicht, der Datenbetriebsschicht und der Graph-Computing-Schicht, führt Berechnungen auf der Anwendungsschicht durch.

1. Geräteschicht

Beinhaltet die Implementierung von Tensorflow auf verschiedenen Hardwaregeräten, unterstützt hauptsächlich CPU, GPU, Mobilgeräte und andere Geräte und implementiert Berechnungsbefehle auf unterschiedlicher Hardware Geräte Die Konvertierung bietet eine einheitliche Schnittstelle zur oberen Ebene, um die plattformübergreifende Funktion des Programms zu realisieren.

2. Netzwerkschicht

Die Netzwerkschicht umfasst hauptsächlich RPC- und RDMA-Kommunikationsprotokolle, um Datenübertragung und Aktualisierungen zwischen verschiedenen Geräten zu realisieren verwendet in.

3. Datenoperationsschicht

verwendet den Tensor als Verarbeitungsobjekt, um verschiedene Operationen und Berechnungen des Tensors zu implementieren.

4. Die Graph-Computing-Schicht

umfasst die Implementierung verteilter Computergraphen und lokaler Computergraphen und realisiert die Erstellung, Kompilierung, Optimierung und Ausführung von Graphen.

Designkonzept

Tensorflow kann als „Fluss von Tensoren“ in einem Berechnungsdiagramm verstanden werden, wobei Tensor (Tensor) die Kanten und Flüsse den Fluss von darstellen Daten, die durch Operationen gebildet werden, die von Knoten im Rechendiagramm ausgeführt werden.

Das Designkonzept basiert auf dem Datenfluss. Nach dem Erstellen des entsprechenden Modells für maschinelles Lernen werden die Trainingsdaten zum Datenfluss im Modell verwendet und die Ergebnisse werden durch Backpropagation an die Parameter im Modell zurückgegeben. , um Parameter anzupassen und die angepassten Parameter zu verwenden, um die Trainingsdaten erneut iterativ zu berechnen.

Programmierfunktionen

Es gibt zwei Programmierfunktionen:

Die Definition des Diagramms und die Bedienung des Diagramms sind vollständig getrennt

In Tensorflow müssen im Voraus verschiedene Variablen definiert, relevante Datenflussdiagramme erstellt, Berechnungsbeziehungen zwischen verschiedenen Variablen im Datenflussdiagramm erstellt und die Definition des Diagramms abgeschlossen werden eingegeben werden, bevor der Ausgabewert gebildet werden kann.

Die Berechnung des Diagramms wird in der Sitzung ausgeführt

Die relevanten Berechnungen des Tensorflows werden im Diagramm definiert, und die spezifische Betriebsumgebung des Diagramms befindet sich in der Sitzung Starten Sie nach dem Öffnen der Sitzung. Wenn Sie die Sitzung schließen, können keine Berechnungen mehr durchgeführt werden.

Zum Beispiel:

import tensorflow as tf
tf.compat.v1.disable_eager_execution()
a = 3
b = 4
c = 5
y = tf.add(a*b, c)
print(y)
a = tf.constant(3, tf.int32)
b = tf.constant(4, tf.int32)
c = tf.constant(5, tf.int32)
y = tf.add(a*b, c)
print(y)
session = tf.compat.v1.Session()
print(session.run(y))
session.close()

Es ist ersichtlich, dass nach der Erstellung des Diagramms die Datenberechnung in der Sitzung durchgeführt und das Endergebnis ausgegeben wird.

Der Vorteil des Designs besteht darin, dass der am meisten verbrauchte Teil im Lernprozess das Training der Daten ist. Wenn es auf diese Weise entworfen wird, wird bei der Berechnung das Diagramm bestimmt Die Berechnung ist nur ein kontinuierlicher iterativer Prozess.

Grundlegende Konzepte

Tensor

Tensor ist die wichtigste Datenstruktur im Tensorflow und wird zur Datenübertragung verwendet Nachdem Sie im Berechnungsdiagramm einen Tensor erstellt haben, müssen Sie ihn einer Variablen oder einem Platzhalter zuweisen, bevor Sie den Tensor zum Berechnungsdiagramm hinzufügen.

Sitzung

Sitzung ist der spezifische Ausführer des Berechnungsdiagramms in Tensorflow, der tatsächlich mit dem Diagramm interagiert. In einer Sitzung können mehrere Diagramme vorhanden sein. Der Hauptzweck der Sitzung besteht darin, dem Diagramm Trainingsdaten zur Berechnung hinzuzufügen und auch die Struktur des Diagramms zu ändern.

Es wird empfohlen, die with-Anweisung im Aufrufmodus zu verwenden:

with session:
    session.run()
Variable

Variablen, die verschiedene Berechnungsparameter im Diagramm darstellen, und den Algorithmus für maschinelles Lernen durch Anpassen des Status dieser Variablen zu optimieren . Um eine Variable zu erstellen, sollte tf.Variable() verwendet werden. Durch die Eingabe eines Tensors muss die Variable nach der Deklaration initialisiert werden, bevor sie verwendet werden kann.

Beispiel:

import tensorflow as tf
tf.compat.v1.disable_eager_execution()
tensor = tf.ones([1, 3])
test_var = tf.Variable(tensor)
# 初始化变量
init_op = tf.compat.v1.global_variables_initializer()
session = tf.compat.v1.Session()
with session:
    print("tensor is ", session.run(tensor))
    # print("test_var is ", session.run(test_var))
    session.run(init_op)
    print("after init, test_var is", session.run(test_var))

Platzhalter

Platzhalter, der das Format der Eingabe- und Ausgabedaten darstellt, den Speicherort der Daten angibt und eingehende Angaben ermöglicht Bestimmen Sie die Art und Form der Daten, rufen Sie die Daten über den Parameter „feed_dict“ in der Sitzung ab und verwenden Sie die erhaltenen Daten, um Berechnungen durchzuführen, wenn das Berechnungsdiagramm ausgeführt wird. Die erhaltenen Daten verschwinden, nachdem die Berechnung abgeschlossen ist.

Beispiel:

x = tf.compat.v1.placeholder(tf.int32)
y = tf.compat.v1.placeholder(tf.int32)
z = tf.add(x, y)
session = tf.compat.v1.Session()
with session:
    print(session.run([z], feed_dict={x: [1, 2], y: [2, 3]}))

Operation

Operation ist ein Knoten im Diagramm. Seine Funktion besteht darin, verschiedene zu vervollständigen Operationen. Beinhaltet:

Mathematische Operationen: add, sub, mul, div, exp...

Array-Operationen: concat, Slice, Split, Rank...

Matrixoperationen: Matmul, Matrixinverse ...

Neuronale Netzwerkkonstruktion: Softmax, Sigmoid, Relu ...

检查点:save, restore ...

队列和同步:enqueue, dequeue, mutexacquire, mutexrelease ...

张量控制:merge, switch, enter, leave ...

Queue

队列,图中有状态的节点。包含入列(endqueue)和出列(dequeue)两个操作,入列返回计算图中的一个操作节点,出列返回一个tensor值。

其中,队列有两种:

1. FIFOQueue

按入列顺序出列的队列,在需要读入的训练样本有序时使用。举个例子:

fifo_queue = tf.compat.v1.FIFOQueue(10, 'int32')
init = fifo_queue.enqueue_many(([1, 2, 3, 4, 5, 6], ))
with tf.compat.v1.Session() as session:
    session.run(init)
    queue_size = session.run(fifo_queue.size())
    for item in range(queue_size):
        print('fifo_queue', session.run(fifo_queue.dequeue()))

2. RandomShuffleQueue

以随机顺序出列的队列,读入的训练样本无序时使用。举个例子:

rs_queue = tf.compat.v1.RandomShuffleQueue(capacity=5, min_after_dequeue=0, dtypes='int32')
init = rs_queue.enqueue_many(([1, 2, 3, 4, 5], ))
with tf.compat.v1.Session() as session:
    session.run(init)
    queue_size = session.run(rs_queue.size())
    for i in range(queue_size):
        print('rs_queue', session.run(rs_queue.dequeue()))

本文来自 python教程 栏目,欢迎学习!  

Das obige ist der detaillierte Inhalt vonTensorflow-Grundlagen (Open-Source-Softwarebibliothek für maschinelles Lernen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen