Set up 1 2 3 4 5 6 from  __future__ import  absolute_importfrom  __future__ import  divisionfrom  __future__ import  print_functionimport  numpy as  npimport  tensorflow as  tf
 
Tensor Values  tensor, rank, shape, value
1 2 3 4 5 6 7 8 9 10 11 1.  [1. , 2. , 3. ]  [[1. , 2. , 3. ],   [4. , 5. , 6. ]]  [     [[1. , 2. , 3. ]],       [[7. , 8. , 9. ]] ]  
 
[[[1.0, 2.0, 3.0]], [[7.0, 8.0, 9.0]]]
 
TensorFlow Core Walkthrough You might think of TensorFlow Core programs as consisting of two discrete sections:
Building the computational graph (a tf.Graph). 
Running the computational graph (using a tf.Session). 
 
Graph A computational graph is a series of TensorFlow operations arranged into a graph. The graph is composed of two types of objects.
tf.Operation (or “ops”): The nodes of the graph. Operations describe calculations that consume and produce tensors. 
tf.Tensor: The edges in the graph. These represent the values that will flow through the graph. Most TensorFlow functions return tf.Tensors. 
 
1 2 3 4 5 6 7 8 a = tf.constant(3.0 , dtype=tf.float32) b = tf.constant(4.0 )  total = a + b print (a)print (b)print (total)
 
Tensor("Const_4:0", shape=(), dtype=float32)
Tensor("Const_5:0", shape=(), dtype=float32)
Tensor("add_2:0", shape=(), dtype=float32)
 
TensorBoard visualizing a computation graph.
1 2 writer = tf.summary.FileWriter('.' ) writer.add_graph(tf.get_default_graph())  
 
Now, in a new terminal, launch TensorBoard with the following shell command:
tensorboard --logdir .
 
then access http://localhost:6006/#graphs
Session To evaluate tensors, instantiate a tf.Session object, informally known as a session. A session encapsulates the state of the TensorFlow runtime, and runs TensorFlow operations. If a tf.Graph is like a .py file, a tf.Session is like the python executable.
1 2 sess = tf.Session() print (sess.run(total))
 
7.0
 
1 print (sess.run({'ab' :(a, b), 'total' :total}))
 
{'total': 7.0, 'ab': (3.0, 4.0)}
 
1 2 3 4 5 6 7 vec = tf.random_uniform(shape=(3 ,)) out1 = vec + 1  out2 = vec + 2  print (sess.run(vec))print (sess.run(vec))print (sess.run((out1, out2)))
 
[0.3936273  0.7793083  0.46128905]
[0.9422312  0.03195083 0.4434662 ]
(array([1.9042395, 1.5705729, 1.4484392], dtype=float32), array([2.9042397, 2.5705729, 2.4484391], dtype=float32))
 
Feeding  A placeholder is a promise to provide a value later, like a function argument.
1 2 3 4 5 6 x = tf.placeholder(tf.float32) y = tf.placeholder(tf.float32) z = x + y print (x)print (y)print (z)
 
Tensor("Placeholder_2:0", dtype=float32)
Tensor("Placeholder_3:0", dtype=float32)
Tensor("add_6:0", dtype=float32)
 
1 2 print (sess.run(z, feed_dict={x: 3 , y: 4.5 }))print (sess.run(z, feed_dict={x: [1 , 3 ], y: [2 , 4 ]}))
 
7.5
[3. 7.]
 
 
Datasets 1 2 3 4 5 6 7 8 my_data = [     [0 , 1 ,],     [2 , 3 ,],     [4 , 5 ,],     [6 , 7 ,], ] slices = tf.data.Dataset.from_tensor_slices(my_data) next_item = slices.make_one_shot_iterator().get_next() 
 
Reaching the end of the data stream causes Dataset to throw an tf.errors.OutOfRangeError. For example, the following code reads the next_item until there is no more data to read:
1 2 3 4 5 while  True :  try :     print (sess.run(next_item))   except  tf.errors.OutOfRangeError:     break  
 
[0 1]
[2 3]
[4 5]
[6 7]
 
If the Dataset depends on stateful operations you may need to initialize the iterator before using it, as shown below:
1 2 3 4 5 6 7 8 9 10 11 r = tf.random_normal([10 ,3 ]) dataset = tf.data.Dataset.from_tensor_slices(r) iterator = dataset.make_initializable_iterator() next_row = iterator.get_next() sess.run(iterator.initializer)  while  True :  try :     print (sess.run(next_row))   except  tf.errors.OutOfRangeError:     break  
 
[-0.27240568  0.41916385  0.8312674 ]
[-0.37411043  0.39321673  0.44852588]
[-2.502281   -0.35216704 -0.42525485]
[ 0.16175386  0.4726008  -0.02786499]
[-0.252643    0.47525632  1.3186764 ]
[ 0.2424109  1.3193169 -0.4673948]
[ 0.43207827  0.31257248 -0.609174  ]
[-0.80196303 -1.100821    2.44067   ]
[0.79778594 0.34206432 1.0677754 ]
[ 0.47419003 -0.7259666   0.8751686 ]
 
Layers Creating Layers 1 2 3 x = tf.placeholder(tf.float32, shape=[None , 3 ]) linear_model = tf.layers.Dense(units=1 )  y = linear_model(x) 
 
Initializing Layers The layer contains variables that must be initialized before they can be used. 
1 2 init = tf.global_variables_initializer() sess.run(init) 
 
Executing Layers 1 print (sess.run(y, {x: [[1 , 2 , 3 ],[4 , 5 , 6 ]]}))
 
[[ 4.5850883]
 [10.428741 ]]
 
Layer Function shortcuts For each layer class (like tf.layers.Dense) TensorFlow also supplies a shortcut function (like tf.layers.dense). 
1 2 3 4 5 6 7 x = tf.placeholder(tf.float32, shape=[None , 3 ]) y = tf.layers.dense(x, units=1 ) init = tf.global_variables_initializer() sess.run(init) print (sess.run(y, {x: [[1 , 2 , 3 ], [4 , 5 , 6 ]]}))
 
[[2.4798913]
 [6.7798343]]
 
Feature columns 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 features = {     'sales'  : [[5 ], [10 ], [8 ], [9 ]],     'department' : ['sports' , 'sports' , 'gardening' , 'gardening' ]} department_column = tf.feature_column.categorical_column_with_vocabulary_list(         'department' , ['sports' , 'gardening' ]) department_column = tf.feature_column.indicator_column(department_column) print (department_column)columns = [     tf.feature_column.numeric_column('sales' ),     department_column ] inputs = tf.feature_column.input_layer(features, columns) print (inputs)
 
_IndicatorColumn(categorical_column=_VocabularyListCategoricalColumn(key='department', vocabulary_list=('sports', 'gardening'), dtype=tf.string, default_value=-1, num_oov_buckets=0))
Tensor("input_layer/concat:0", shape=(4, 3), dtype=float32)
 
Running the inputs tensor will parse the features into a batch of vectors.
Feature columns can have internal state, like layers, so they often need to be initialized. Categorical columns use tf.contrib.lookup internally and these require a separate initialization op, tf.tables_initializer.
1 2 3 4 var_init = tf.global_variables_initializer() table_init = tf.tables_initializer() sess = tf.Session() sess.run((var_init, table_init)) 
 
(None, None)
 
 
[[ 1.  0.  5.]
 [ 1.  0. 10.]
 [ 0.  1.  8.]
 [ 0.  1.  9.]]
 
Training Define the data 1 2 x = tf.constant([[1 ], [2 ], [3 ], [4 ]], dtype=tf.float32) y_true = tf.constant([[0 ], [-1 ], [-2 ], [-3 ]], dtype=tf.float32) 
 
Define the model 1 2 3 linear_model = tf.layers.Dense(units=1 ) y_pred = linear_model(x) 
 
1 2 3 4 5 6 7 sess = tf.Session() init = tf.global_variables_initializer() sess.run(init) print (sess.run(y_pred))
 
[[0.5062338]
 [1.0124676]
 [1.5187014]
 [2.0249352]]
 
Loss To optimize a model, you first need to define the loss. We’ll use the mean square error (MSE), a standard loss for regression problems.
1 2 3 loss = tf.losses.mean_squared_error(labels=y_true, predictions=y_pred) print (sess.run(loss))
 
10.484383
 
Training TensorFlow provides optimizers implementing standard optimization algorithms. These are implemented as sub-classes of tf.train.Optimizer. They incrementally change each variable in order to minimize the loss. The simplest optimization algorithm is gradient descent, implemented by tf.train.GradientDescentOptimizer. 
1 2 optimizer = tf.train.GradientDescentOptimizer(0.01 ) train = optimizer.minimize(loss)  
 
1 2 3 for  i in  range (100 ):  _, loss_value = sess.run((train, loss))   print (loss_value) 
 
10.484383
7.366995
5.2033534
3.7015016
2.6588542
1.9348423
1.4319282
1.0824323
0.83939326
0.67022556
0.5523189
0.46998408
0.41233516
0.37181824
0.34319195
0.32281947
0.30817705
0.29751378
0.28961438
0.2836359
0.27899322
0.2752804
0.27221578
0.26960373
0.26730868
0.2652365
 
 
[[-0.66274  ]
 [-1.3211429]
 [-1.9795457]
 [-2.6379485]]
 
Complete program 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 x = tf.constant([[1 ], [2 ], [3 ], [4 ]], dtype=tf.float32) y_true = tf.constant([[0 ], [-1 ], [-2 ], [-3 ]], dtype=tf.float32) linear_model = tf.layers.Dense(units=1 ) y_pred = linear_model(x) loss = tf.losses.mean_squared_error(labels=y_true, predictions=y_pred) optimizer = tf.train.GradientDescentOptimizer(0.01 ) train = optimizer.minimize(loss) init = tf.global_variables_initializer() sess = tf.Session() sess.run(init) for  i in  range (100 ):  _, loss_value = sess.run((train, loss))    print (sess.run(y_pred))
 
[[-0.5594496]
 [-1.2710916]
 [-1.9827336]
 [-2.6943758]]
 
Reference 
History