[PYTHON] Rezeptsammlung zum Vergleich der Versionen 1 und 2 von TensorFlow (Teil 1)

Einführung

Tensorflow ist ein typischer Rahmen für tiefes Lernen. Dieser Tensor Flow wird im Oktober 2019 Version 2.0 sein. Die Art und Weise, wie die Quelle geschrieben wird, hat sich ebenfalls geändert.

Die meisten Artikel sind jedoch noch in der 1.X-Version verfasst. ** Wie schreibst du das nach 2.0? ** ** ** Ich denke, es gibt viele Leute, die stecken bleiben.

Ich war einer von ihnen, also schrieb ich einen Artikel mit einem Memorandum, um zu den Grundlagen zurückzukehren. Ich arrangiere es selbst, während ich mich auf verschiedene Dinge beziehe Wenn Sie Fehler haben, hinterlassen Sie bitte einen Kommentar.

Darüber hinaus wird die einzuführende Probe nicht im Detail erläutert. Es ist sehr einfach und auf den Unterschied zwischen ver1 und ver2 spezialisiert.

Umgebung

Rezeptsammlung

Datenflussdiagramm

Zusatz

Für ver 1.15.0

in


import tensorflow as tf

a = tf.constant(1, name='a')
b = tf.constant(2, name='b')
c = a + b

with tf.Session() as sess:
    print(sess.run(c))
    print(c)
    print(type(c))

out


3
Tensor("add:0", shape=(), dtype=int32)
<class 'tensorflow.python.framework.ops.Tensor'>

Für ver 2.1.0

in


import tensorflow as tf

a = tf.constant(1, name='a')
b = tf.constant(2, name='b')
c = a + b

tf.print(c)
print(c)
print(type(c))

out


3
tf.Tensor(3, shape=(), dtype=int32)
<class 'tensorflow.python.framework.ops.EagerTensor'>

【Referenz】 tf.print

Definitionsausgabe

Für ver 1.15.0

in


import tensorflow as tf

a = tf.constant(1, name='a')
b = tf.constant(2, name='b')
c = a + b

with tf.Session() as sess:
    print(sess.run(c))
    print(c)

graph = tf.get_default_graph()
print(graph.as_graph_def())

out


node {
  name: "a"
  op: "Const"
  ...(Unterlassung)...
node {
  name: "add"
  op: "AddV2"
  input: "a"
  input: "b"
  attr {
    key: "T"
    value {
      type: DT_INT32
    }
  }
}
versions {
  producer: 134
}

Für ver 2.1.0

in


import tensorflow as tf

graph = tf.Graph()
with graph.as_default():
    a = tf.constant(1, name='a')
    b = tf.constant(2, name='b')
    c = a + b
    print(graph.as_graph_def())

out


# ver 1.15.Ausgelassen, weil es dasselbe wie 0 ist

Weisen Sie Variablen Konstanten zu

Für ver 1.15.0

in


import tensorflow as tf

a = tf.Variable(10, name='a')
b = tf.constant(2, name='b')
c = tf.assign(a, a + b)

with tf.Session() as sess:
    # global_variables_initializer() :Initialisieren Sie alle Variablen
    sess.run(tf.global_variables_initializer())
    print(sess.run(c))
    print(sess.run(c))

out


12
14

Für ver 2.1.0

in


import tensorflow as tf

a = tf.Variable(10, name='a')
b = tf.constant(2, name='b')
tf.print(a.assign_add(b))
tf.print(a.assign_add(b))

out


12
14

Der verschwundene Platzhalter

Für ver 1.15.0

in


import tensorflow as tf

a = tf.placeholder(dtype=tf.int32, name='a')
b = tf.constant(2, name='b')
c = a + b

with tf.Session() as sess:
    print(sess.run(c, feed_dict={a: 10}))
    print(a, b, c)

out


12
Tensor("a:0", dtype=int32) Tensor("b:0", shape=(), dtype=int32) Tensor("add:0", dtype=int32)

Für ver 2.1.0

in


import tensorflow as tf

a = tf.Variable(10, name='a')
b = tf.constant(2, name='b')

# @tf.AutoGraph mit Funktion
@tf.function
def add(x, y):
    return x + y

c = add(a,b)
tf.print(c)
print(type(c))
print(a, b, c)

out


12
<class 'tensorflow.python.framework.ops.EagerTensor'>
<tf.Variable 'a:0' shape=() dtype=int32, numpy=10> tf.Tensor(2, shape=(), dtype=int32) tf.Tensor(12, shape=(), dtype=int32)

【Referenz】 Migrate your TensorFlow 1 code to TensorFlow 2

Vier Regeln

Für ver 1.15.0

in


import tensorflow as tf

a = tf.constant(5, name='a')
b = tf.constant(2, name='b')
add = tf.add(a, b) #Hinzufügen
subtract = tf.subtract(a, b) #Subtrahieren
multiply = tf.multiply(a, b) #Multiplizieren
truediv = tf.truediv(a, b) #Teilung

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(add))
    print(sess.run(subtract))
    print(sess.run(multiply))
    print(sess.run(truediv))
    print(type(add))

out


7
3
10
2.5
<class 'tensorflow.python.framework.ops.Tensor'>

Für ver 2.1.0

in


import tensorflow as tf

a = tf.constant(5, name='a')
b = tf.constant(2, name='b')
add = tf.math.add(a, b) #Hinzufügen
dif = tf.math.subtract(a,b) #Subtrahieren
multiply = tf.math.multiply(a, b) #Multiplizieren
truediv = tf.math.truediv(a, b) #Teilung

tf.print(add)
tf.print(dif)
tf.print(multiply)
tf.print(truediv)
print(type(add))

out


7
3
10
2.5
<class 'tensorflow.python.framework.ops.EagerTensor'>

【Referenz】 tf.math

Matrixbetrieb

Für ver 1.15.0

in


import tensorflow as tf

a = tf.constant([[1, 2], [3, 4]], name='a')
b = tf.constant([[1], [2]], name='b')
c = tf.matmul(a, b) #Matrix a,Multiplizieren b

with tf.Session() as sess:
    print(a.shape)
    print(b.shape)
    print(c.shape)
    print('a', sess.run(a))
    print('b', sess.run(b))
    print('c', sess.run(c))

out


(2, 2)
(2, 1)
(2, 1)
a [[1 2]
 [3 4]]
b [[1]
 [2]]
c [[ 5]
 [11]]

Für ver 2.1.0

in


import tensorflow as tf

a = tf.constant([[1, 2], [3, 4]], name='a')
b = tf.constant([[1], [2]], name='b')
c = tf.linalg.matmul(a, b) #Matrix a,Multiplizieren b

print(a.shape)
print(b.shape)
print(c.shape)
tf.print('a', a)
tf.print('b', b)
tf.print('c', c)

out


# ver 1.15.Ausgelassen, weil es dasselbe wie 0 ist

abschließend

Dieses Mal habe ich die Grundlagen in den Grundlagen zusammengefasst. Nächstes Mal möchte ich die Gradientenmethode beschreiben.

Recommended Posts

Rezeptsammlung zum Vergleich der Versionen 1 und 2 von TensorFlow (Teil 1)
Visualisierung von CNN-Feature-Maps und -Filtern (Tensorflow 2.0)
Verarbeitung und Beurteilung des Datenanalyseplans (Teil 1)
Verarbeitung und Beurteilung des Datenanalyseplans (Teil 2)
Höchstwahrscheinlich Schätzung des Mittelwerts und der Varianz mit TensorFlow
Ich habe mir die Versionen von Blender und Python angesehen
DNN (Deep Learning) Library: Vergleich von Chainer und TensorFlow (1)
Sammlung und Automatisierung erotischer Bilder durch Deep Learning