Tensorflow est un framework typique pour l'apprentissage en profondeur. Ce Tensor Flow sera la version 2.0 en octobre 2019, La façon dont la source est écrite a également changé.
Cependant, la majorité des articles sont toujours écrits en version 1.X, ** Comment écrivez-vous cela après 2.0? ** ** Je pense qu'il y a beaucoup de gens qui restent coincés.
J'étais l'un d'entre eux, j'ai donc écrit un article avec un mémorandum pour revenir à l'essentiel. Je l'arrange moi-même en me référant à diverses choses, donc Si vous avez des erreurs, laissez un commentaire.
De plus, l'échantillon à introduire n'est pas expliqué en détail. Il est très simple et se spécialise dans la différence entre ver1 et ver2.
Pour 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'>
Pour 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'>
【référence】 tf.print
Pour 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"
...(Omission)...
node {
name: "add"
op: "AddV2"
input: "a"
input: "b"
attr {
key: "T"
value {
type: DT_INT32
}
}
}
versions {
producer: 134
}
Pour 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.Omis car il est identique à 0
Pour 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() :Initialiser toutes les variables
sess.run(tf.global_variables_initializer())
print(sess.run(c))
print(sess.run(c))
out
12
14
Pour 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
Pour 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)
Pour ver 2.1.0
in
import tensorflow as tf
a = tf.Variable(10, name='a')
b = tf.constant(2, name='b')
# @tf.AutoGraph avec fonction
@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)
【référence】 Migrate your TensorFlow 1 code to TensorFlow 2
Pour 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) #Ajouter
subtract = tf.subtract(a, b) #Soustraire
multiply = tf.multiply(a, b) #Multiplier
truediv = tf.truediv(a, b) #division
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'>
Pour 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) #Ajouter
dif = tf.math.subtract(a,b) #Soustraire
multiply = tf.math.multiply(a, b) #Multiplier
truediv = tf.math.truediv(a, b) #division
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'>
【référence】 tf.math
Pour 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) #Matrice a,Multiplier 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]]
Pour 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) #Matrice a,Multiplier 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.Omis car il est identique à 0
Cette fois, j'ai résumé les bases dans les bases. La prochaine fois, j'aimerais décrire la méthode du gradient.
Recommended Posts