一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

TensorFlow學(xué)習(xí)筆記(四)

 雪柳花明 2017-03-14

一、TensorFlow運(yùn)作方式入門(mén)

fully_connected_feed.py

[python] view plain copy
在CODE上查看代碼片派生到我的代碼片
  1. # Copyright 2015 Google Inc. All Rights Reserved.  
  2. #  
  3. # Licensed under the Apache License, Version 2.0 (the "License");  
  4. # you may not use this file except in compliance with the License.  
  5. # You may obtain a copy of the License at  
  6. #  
  7. #     http://www./licenses/LICENSE-2.0  
  8. #  
  9. # Unless required by applicable law or agreed to in writing, software  
  10. # distributed under the License is distributed on an "AS IS" BASIS,  
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
  12. # See the License for the specific language governing permissions and  
  13. # limitations under the License.  
  14. # ==============================================================================  
  15.   
  16. """Trains and Evaluates the MNIST network using a feed dictionary."""  
  17. # pylint: disable=missing-docstring  
  18. from __future__ import absolute_import  
  19. from __future__ import division  
  20. from __future__ import print_function  
  21.   
  22. import os.path  
  23. import time  
  24.   
  25. import tensorflow.python.platform  
  26. import numpy  
  27. from six.moves import xrange  # pylint: disable=redefined-builtin  
  28. import tensorflow as tf  
  29.   
  30. #from tensorflow.examples.tutorials.mnist import input_data  
  31. #from tensorflow.examples.tutorials.mnist import mnist  
  32. import input_data, mnist  
  33.   
  34. # Basic model parameters as external flags.  
  35. flags = tf.app.flags  
  36. FLAGS = flags.FLAGS  
  37. flags.DEFINE_float('learning_rate'0.01'Initial learning rate.')  
  38. flags.DEFINE_integer('max_steps'2000'Number of steps to run trainer.')  
  39. flags.DEFINE_integer('hidden1'128'Number of units in hidden layer 1.')  
  40. flags.DEFINE_integer('hidden2'32'Number of units in hidden layer 2.')  
  41. flags.DEFINE_integer('batch_size'100'Batch size.  '  
  42.                      'Must divide evenly into the dataset sizes.')  
  43. flags.DEFINE_string('train_dir''Mnist_data/''Directory to put the training data.')  
  44. flags.DEFINE_boolean('fake_data'False'If true, uses fake data '  
  45.                      'for unit testing.')  
  46.   
  47.   
  48. def placeholder_inputs(batch_size):  
  49.   """Generate placeholder variables to represent the input tensors. 
  50.  
  51.   These placeholders are used as inputs by the rest of the model building 
  52.   code and will be fed from the downloaded data in the .run() loop, below. 
  53.  
  54.   Args: 
  55.     batch_size: The batch size will be baked into both placeholders. 
  56.  
  57.   Returns: 
  58.     images_placeholder: Images placeholder. 
  59.     labels_placeholder: Labels placeholder. 
  60.   """  
  61.   # Note that the shapes of the placeholders match the shapes of the full  
  62.   # image and label tensors, except the first dimension is now batch_size  
  63.   # rather than the full size of the train or test data sets.  
  64.   images_placeholder = tf.placeholder(tf.float32, shape=(batch_size,  
  65.                                                          mnist.IMAGE_PIXELS))  
  66.   labels_placeholder = tf.placeholder(tf.int32, shape=(batch_size))  
  67.   return images_placeholder, labels_placeholder  
  68.   
  69.   
  70. def fill_feed_dict(data_set, images_pl, labels_pl):  
  71.   """Fills the feed_dict for training the given step. 
  72.  
  73.   A feed_dict takes the form of: 
  74.   feed_dict = { 
  75.       <placeholder>: <tensor of values to be passed for placeholder>, 
  76.       .... 
  77.   } 
  78.  
  79.   Args: 
  80.     data_set: The set of images and labels, from input_data.read_data_sets() 
  81.     images_pl: The images placeholder, from placeholder_inputs(). 
  82.     labels_pl: The labels placeholder, from placeholder_inputs(). 
  83.  
  84.   Returns: 
  85.     feed_dict: The feed dictionary mapping from placeholders to values. 
  86.   """  
  87.   # Create the feed_dict for the placeholders filled with the next  
  88.   # `batch size ` examples.  
  89.   images_feed, labels_feed = data_set.next_batch(FLAGS.batch_size,  
  90.                                                  FLAGS.fake_data)  
  91.   feed_dict = {  
  92.       images_pl: images_feed,  
  93.       labels_pl: labels_feed,  
  94.   }  
  95.   return feed_dict  
  96.   
  97.   
  98. def do_eval(sess,  
  99.             eval_correct,  
  100.             images_placeholder,  
  101.             labels_placeholder,  
  102.             data_set):  
  103.   """Runs one evaluation against the full epoch of data. 
  104.  
  105.   Args: 
  106.     sess: The session in which the model has been trained. 
  107.     eval_correct: The Tensor that returns the number of correct predictions. 
  108.     images_placeholder: The images placeholder. 
  109.     labels_placeholder: The labels placeholder. 
  110.     data_set: The set of images and labels to evaluate, from 
  111.       input_data.read_data_sets(). 
  112.   """  
  113.   # And run one epoch of eval.  
  114.   true_count = 0  # Counts the number of correct predictions.  
  115.   steps_per_epoch = data_set.num_examples // FLAGS.batch_size  
  116.   num_examples = steps_per_epoch * FLAGS.batch_size  
  117.   for step in xrange(steps_per_epoch):  
  118.     feed_dict = fill_feed_dict(data_set,  
  119.                                images_placeholder,  
  120.                                labels_placeholder)  
  121.     true_count += sess.run(eval_correct, feed_dict=feed_dict)  
  122.   precision = true_count / num_examples  
  123.   print('  Num examples: %d  Num correct: %d  Precision @ 1: %0.04f' %  
  124.         (num_examples, true_count, precision))  
  125.   
  126.   
  127. def run_training():  
  128.   """Train MNIST for a number of steps."""  
  129.   # Get the sets of images and labels for training, validation, and  
  130.   # test on MNIST.  
  131.   data_sets = input_data.read_data_sets(FLAGS.train_dir, FLAGS.fake_data)  
  132.   
  133.   # Tell TensorFlow that the model will be built into the default Graph.  
  134.   with tf.Graph().as_default():  
  135.     # Generate placeholders for the images and labels.  
  136.     images_placeholder, labels_placeholder = placeholder_inputs(  
  137.         FLAGS.batch_size)  
  138.   
  139.     # Build a Graph that computes predictions from the inference model.  
  140.     logits = mnist.inference(images_placeholder,  
  141.                              FLAGS.hidden1,  
  142.                              FLAGS.hidden2)  
  143.   
  144.     # Add to the Graph the Ops for loss calculation.  
  145.     loss = mnist.loss(logits, labels_placeholder)  
  146.   
  147.     # Add to the Graph the Ops that calculate and apply gradients.  
  148.     train_op = mnist.training(loss, FLAGS.learning_rate)  
  149.   
  150.     # Add the Op to compare the logits to the labels during evaluation.  
  151.     eval_correct = mnist.evaluation(logits, labels_placeholder)  
  152.   
  153.     # Build the summary operation based on the TF collection of Summaries.  
  154.     summary_op = tf.merge_all_summaries()  
  155.   
  156.     # Create a saver for writing training checkpoints.  
  157.     saver = tf.train.Saver()  
  158.   
  159.     # Create a session for running Ops on the Graph.  
  160.     sess = tf.Session()  
  161.   
  162.     # Run the Op to initialize the variables.  
  163.     init = tf.initialize_all_variables()  
  164.     sess.run(init)  
  165.   
  166.     # Instantiate a SummaryWriter to output summaries and the Graph.  
  167.     summary_writer = tf.train.SummaryWriter(FLAGS.train_dir,  
  168.                                             graph_def=sess.graph_def)  
  169.   
  170.     # And then after everything is built, start the training loop.  
  171.     for step in xrange(FLAGS.max_steps):  
  172.       start_time = time.time()  
  173.   
  174.       # Fill a feed dictionary with the actual set of images and labels  
  175.       # for this particular training step.  
  176.       feed_dict = fill_feed_dict(data_sets.train,  
  177.                                  images_placeholder,  
  178.                                  labels_placeholder)  
  179.   
  180.       # Run one step of the model.  The return values are the activations  
  181.       # from the `train_op` (which is discarded) and the `loss` Op.  To  
  182.       # inspect the values of your Ops or variables, you may include them  
  183.       # in the list passed to sess.run() and the value tensors will be  
  184.       # returned in the tuple from the call.  
  185.       _, loss_value = sess.run([train_op, loss],  
  186.                                feed_dict=feed_dict)  
  187.   
  188.       duration = time.time() - start_time  
  189.   
  190.       # Write the summaries and print an overview fairly often.  
  191.       if step % 100 == 0:  
  192.         # Print status to stdout.  
  193.         print('Step %d: loss = %.2f (%.3f sec)' % (step, loss_value, duration))  
  194.         # Update the events file.  
  195.         summary_str = sess.run(summary_op, feed_dict=feed_dict)  
  196.         summary_writer.add_summary(summary_str, step)  
  197.   
  198.       # Save a checkpoint and evaluate the model periodically.  
  199.       if (step + 1) % 1000 == 0 or (step + 1) == FLAGS.max_steps:  
  200.         saver.save(sess, FLAGS.train_dir, global_step=step)  
  201.         # Evaluate against the training set.  
  202.         print('Training Data Eval:')  
  203.         do_eval(sess,  
  204.                 eval_correct,  
  205.                 images_placeholder,  
  206.                 labels_placeholder,  
  207.                 data_sets.train)  
  208.         # Evaluate against the validation set.  
  209.         print('Validation Data Eval:')  
  210.         do_eval(sess,  
  211.                 eval_correct,  
  212.                 images_placeholder,  
  213.                 labels_placeholder,  
  214.                 data_sets.validation)  
  215.         # Evaluate against the test set.  
  216.         print('Test Data Eval:')  
  217.         do_eval(sess,  
  218.                 eval_correct,  
  219.                 images_placeholder,  
  220.                 labels_placeholder,  
  221.                 data_sets.test)  
  222.   
  223.   
  224. def main(_):  
  225.   run_training()  
  226.   
  227.   
  228. if __name__ == '__main__':  
  229.   tf.app.run()  

**`fully_connected_feed.py`**的運(yùn)行結(jié)果如下(本人電腦為2 CPU,沒(méi)有使用GPU):
```
Extracting Mnist_data/train-images-idx3-ubyte.gz
Extracting Mnist_data/train-labels-idx1-ubyte.gz
Extracting Mnist_data/t10k-images-idx3-ubyte.gz
Extracting Mnist_data/t10k-labels-idx1-ubyte.gz
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 2
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 2
Step 0: loss = 2.33 (0.023 sec)
Step 100: loss = 2.09 (0.007 sec)
Step 200: loss = 1.76 (0.009 sec)
Step 300: loss = 1.36 (0.007 sec)
Step 400: loss = 1.12 (0.007 sec)
Step 500: loss = 0.74 (0.008 sec)
Step 600: loss = 0.78 (0.006 sec)
Step 700: loss = 0.69 (0.007 sec)
Step 800: loss = 0.67 (0.007 sec)
Step 900: loss = 0.52 (0.010 sec)
Training Data Eval:
  Num examples: 55000  Num correct: 47532  Precision @ 1: 0.8642
Validation Data Eval:
  Num examples: 5000  Num correct: 4360  Precision @ 1: 0.8720
Test Data Eval:
  Num examples: 10000  Num correct: 8705  Precision @ 1: 0.8705
Step 1000: loss = 0.56 (0.013 sec)
Step 1100: loss = 0.50 (0.145 sec)
Step 1200: loss = 0.33 (0.007 sec)
Step 1300: loss = 0.44 (0.006 sec)
Step 1400: loss = 0.39 (0.006 sec)
Step 1500: loss = 0.33 (0.009 sec)
Step 1600: loss = 0.56 (0.008 sec)
Step 1700: loss = 0.50 (0.007 sec)
Step 1800: loss = 0.42 (0.006 sec)
Step 1900: loss = 0.41 (0.006 sec)
Training Data Eval:
  Num examples: 55000  Num correct: 49220  Precision @ 1: 0.8949
Validation Data Eval:
  Num examples: 5000  Num correct: 4520  Precision @ 1: 0.9040
Test Data Eval:
  Num examples: 10000  Num correct: 9014  Precision @ 1: 0.9014
[Finished in 22.8s]

微笑微笑微笑

二、 Tensorboard訓(xùn)練過(guò)程可視化
 
mnist_with_summaries.py

[python] view plain copy
在CODE上查看代碼片派生到我的代碼片
  1. # Copyright 2015 Google Inc. All Rights Reserved.  
  2. #  
  3. # Licensed under the Apache License, Version 2.0 (the "License");  
  4. # you may not use this file except in compliance with the License.  
  5. # You may obtain a copy of the License at  
  6. #  
  7. #     http://www./licenses/LICENSE-2.0  
  8. #  
  9. # Unless required by applicable law or agreed to in writing, software  
  10. # distributed under the License is distributed on an "AS IS" BASIS,  
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
  12. # See the License for the specific language governing permissions and  
  13. # limitations under the License.  
  14. # ==============================================================================  
  15.   
  16. """A very simple MNIST classifier, modified to display data in TensorBoard. 
  17.  
  18. See extensive documentation for the original model at 
  19. http:///tutorials/mnist/beginners/index.md 
  20.  
  21. See documentation on the TensorBoard specific pieces at 
  22. http:///how_tos/summaries_and_tensorboard/index.md 
  23.  
  24. If you modify this file, please update the exerpt in 
  25. how_tos/summaries_and_tensorboard/index.md. 
  26.  
  27. """  
  28. from __future__ import absolute_import  
  29. from __future__ import division  
  30. from __future__ import print_function  
  31.   
  32. import tensorflow.python.platform  
  33. #from tensorflow.examples.tutorials.mnist import input_data  
  34. import input_data  
  35. import tensorflow as tf  
  36.   
  37. flags = tf.app.flags  
  38. FLAGS = flags.FLAGS  
  39. flags.DEFINE_boolean('fake_data'False'If true, uses fake data '  
  40.                      'for unit testing.')  
  41. flags.DEFINE_integer('max_steps'1000'Number of steps to run trainer.')  
  42. flags.DEFINE_float('learning_rate'0.01'Initial learning rate.')  
  43.   
  44.   
  45. def main(_):  
  46.   # Import data  
  47.   mnist = input_data.read_data_sets('Mnist_data/', one_hot=True,  
  48.                                     fake_data=FLAGS.fake_data)  
  49.   
  50.   sess = tf.InteractiveSession()  
  51.   
  52.   # Create the model  
  53.   x = tf.placeholder(tf.float32, [None784], name='x-input')  
  54.   W = tf.Variable(tf.zeros([78410]), name='weights')  
  55.   b = tf.Variable(tf.zeros([10], name='bias'))  
  56.   
  57.   # Use a name scope to organize nodes in the graph visualizer  
  58.   with tf.name_scope('Wx_b'):  
  59.     y = tf.nn.softmax(tf.matmul(x, W) + b)  
  60.   
  61.   # Add summary ops to collect data  
  62.   _ = tf.histogram_summary('weights', W)  
  63.   _ = tf.histogram_summary('biases', b)  
  64.   _ = tf.histogram_summary('y', y)  
  65.   
  66.   # Define loss and optimizer  
  67.   y_ = tf.placeholder(tf.float32, [None10], name='y-input')  
  68.   # More name scopes will clean up the graph representation  
  69.   with tf.name_scope('xent'):  
  70.     cross_entropy = -tf.reduce_sum(y_ * tf.log(y))  
  71.     _ = tf.scalar_summary('cross entropy', cross_entropy)  
  72.   with tf.name_scope('train'):  
  73.     train_step = tf.train.GradientDescentOptimizer(  
  74.         FLAGS.learning_rate).minimize(cross_entropy)  
  75.   
  76.   with tf.name_scope('test'):  
  77.     correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))  
  78.     accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))  
  79.     _ = tf.scalar_summary('accuracy', accuracy)  
  80.   
  81.   # Merge all the summaries and write them out to /tmp/mnist_logs  
  82.   merged = tf.merge_all_summaries()  
  83.   writer = tf.train.SummaryWriter('/tmp/mnist_logs', sess.graph_def)  
  84.   tf.initialize_all_variables().run()  
  85.   
  86.   # Train the model, and feed in test data and record summaries every 10 steps  
  87.   
  88.   for i in range(FLAGS.max_steps):  
  89.     if i % 10 == 0:  # Record summary data and the accuracy  
  90.       if FLAGS.fake_data:  
  91.         batch_xs, batch_ys = mnist.train.next_batch(  
  92.             100, fake_data=FLAGS.fake_data)  
  93.         feed = {x: batch_xs, y_: batch_ys}  
  94.       else:  
  95.         feed = {x: mnist.test.images, y_: mnist.test.labels}  
  96.       result = sess.run([merged, accuracy], feed_dict=feed)  
  97.       summary_str = result[0]  
  98.       acc = result[1]  
  99.       writer.add_summary(summary_str, i)  
  100.       print('Accuracy at step %s: %s' % (i, acc))  
  101.     else:  
  102.       batch_xs, batch_ys = mnist.train.next_batch(  
  103.           100, fake_data=FLAGS.fake_data)  
  104.       feed = {x: batch_xs, y_: batch_ys}  
  105.       sess.run(train_step, feed_dict=feed)  
  106.   
  107. if __name__ == '__main__':  
  108.   tf.app.run()  



**`mnist_with_summaries.py`**主要提供了一種在Tensorboard可視化方法,首先,編譯運(yùn)行代碼:


運(yùn)行完畢后,打開(kāi)終端`Terminal`,輸入`tensorboard --logdir=/tmp/mnist_logs`,就會(huì)運(yùn)行出:`Starting TensorBoard on port 6006 (You can navigate to http://localhost:6006)`

然后,打開(kāi)瀏覽器,輸入鏈接`http://localhost:6006`:


其中,有一些選項(xiàng),例如菜單欄里包括`EVENTS, IMAGES, GRAPH, HISTOGRAMS`,都可以一一點(diǎn)開(kāi)查看~

另外,此時(shí)如果不關(guān)閉該終端,是無(wú)法在其他終端中重新生成可視化結(jié)果的,會(huì)出現(xiàn)端口占用的錯(cuò)誤。



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    亚洲伦理中文字幕在线观看| 午夜色午夜视频之日本| 国产精品乱子伦一区二区三区| 久久精品蜜桃一区二区av| 东京热电东京热一区二区三区| 91亚洲国产成人久久| 亚洲精选91福利在线观看| 国语久精品在视频在线观看| 后入美臀少妇一区二区| 中文字幕中文字幕在线十八区| 日本精品视频一二三区| 台湾综合熟女一区二区| 久久热在线免费视频精品| 国产精品99一区二区三区| 亚洲中文字幕在线观看四区| 欧美av人人妻av人人爽蜜桃| 欧美日韩免费观看视频| 成人精品一区二区三区在线| 日韩中文字幕有码午夜美女| 亚洲中文字幕视频在线播放 | 国产亚洲不卡一区二区| 欧美日韩校园春色激情偷拍| 亚洲中文字幕一区三区| 熟妇人妻av中文字幕老熟妇| 精品国产日韩一区三区| 欧美午夜不卡在线观看| 99国产高清不卡视频| 亚洲中文字幕一区三区| 四季av一区二区播放| 日本精品视频一二三区| 日韩成人中文字幕在线一区 | 在线免费国产一区二区| 久草国产精品一区二区| 午夜亚洲精品理论片在线观看| 91熟女大屁股偷偷对白| 国产麻豆成人精品区在线观看| 国产欧美日韩精品成人专区| 欧洲一级片一区二区三区| 草草草草在线观看视频| 国产日韩欧美综合视频| 中文字幕高清不卡一区|