讲解几个重点知识

1、对于tf.get_variable()中的reuse,意思是,如果有名字一模一样的变量,则对这个变量继续使用,如果没有名字一模一样的变量,则创建这个变量

2、options=run_options, run_metadata=run_metadata这玩意不好使

3、记住accuracy的argmax()

4、求accuracy三步:(1)argmax() (2)cast() (3)reduce_mean()

以下是mnist_inference的内容
  1. import tensorflow as tf
  2. INPUT_NODE = 784
  3. OUTPUT_NODE = 10
  4. LAYER1_NODE = 500
  5. def get_weight_variable(shape, regularizer):
  6. weights = tf.get_variable("weights", shape, initializer=tf.truncated_normal_initializer(stddev=0.1))
  7. if regularizer != None: tf.add_to_collection('losses', regularizer(weights))
  8. return weights
  9. def inference(input_tensor, regularizer):
  10. with tf.variable_scope('layer1'):
  11. weights = get_weight_variable([INPUT_NODE, LAYER1_NODE], regularizer)
  12. biases = tf.get_variable("biases", [LAYER1_NODE], initializer=tf.constant_initializer(0.0))
  13. layer1 = tf.nn.relu(tf.matmul(input_tensor, weights) + biases)
  14. with tf.variable_scope('layer2'):
  15. weights = get_weight_variable([LAYER1_NODE, OUTPUT_NODE], regularizer)
  16. biases = tf.get_variable("biases", [OUTPUT_NODE], initializer=tf.constant_initializer(0.0))
  17. layer2 = tf.matmul(layer1, weights) + biases
  18. return layer2
以下是train的内容
  1. import tensorflow as tf
  2. from tensorflow.examples.tutorials.mnist import input_data
  3. import mnist_inference
  4. from mnist_inference import inference
  5. BATCH_SIZE = 100
  6. LEARNING_RATE_BASE = 0.8
  7. LEARNING_RATE_DECAY = 0.99
  8. REGULARIZATION_RATE = 0.0001
  9. TRAINING_STEPS = 30000
  10. MOVING_AVERAGE_DECAY = 0.99
  11. def train(mnist):
  12. # 输入数据的命名空间。
  13. with tf.name_scope('input'):
  14. x = tf.placeholder(tf.float32, [None, mnist_inference.INPUT_NODE], name='x-input')
  15. y_ = tf.placeholder(tf.float32, [None, mnist_inference.OUTPUT_NODE], name='y-input')
  16. with tf.variable_scope("layer"):
  17. regularizer = tf.contrib.layers.l2_regularizer(REGULARIZATION_RATE)
  18. y = mnist_inference.inference(x, regularizer)
  19. global_step = tf.Variable(0, trainable=False)
  20. # 处理滑动平均的命名空间。
  21. with tf.name_scope("moving_average"):
  22. variable_averages = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY, global_step)
  23. variables_averages_op = variable_averages.apply(tf.trainable_variables())
  24. # 计算损失函数的命名空间。
  25. with tf.name_scope("loss_function"):
  26. cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=tf.argmax(y_, 1))
  27. cross_entropy_mean = tf.reduce_mean(cross_entropy)
  28. loss = cross_entropy_mean + tf.add_n(tf.get_collection('losses'))
  29. with tf.name_scope("layer"):
  30. logits = inference(x, None)
  31. accuracy_op = tf.reduce_mean(tf.cast(tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1)), tf.float32))
  32. # 定义学习率、优化方法及每一轮执行训练的操作的命名空间。
  33. with tf.name_scope("train_step"):
  34. learning_rate = tf.train.exponential_decay(
  35. LEARNING_RATE_BASE,
  36. global_step,
  37. mnist.train.num_examples / BATCH_SIZE, LEARNING_RATE_DECAY,
  38. staircase=True)
  39. train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss, global_step=global_step)
  40. with tf.control_dependencies([train_step, variables_averages_op]):
  41. train_op = tf.no_op(name='train')
  42. writer = tf.summary.FileWriter("log", tf.get_default_graph()) # 注意这个是写在前面的
  43. # 训练模型。
  44. with tf.Session() as sess:
  45. tf.global_variables_initializer().run()
  46. for i in range(TRAINING_STEPS):
  47. xs, ys = mnist.train.next_batch(BATCH_SIZE)
  48. if i % 1000 == 0:
  49. # 配置运行时需要记录的信息。
  50. run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
  51. # 运行时记录运行信息的proto。
  52. run_metadata = tf.RunMetadata()
  53. _, loss_value, step = sess.run(
  54. [train_op, loss, global_step], feed_dict={x: xs, y_: ys})
  55. # options=run_options, run_metadata=run_metadata) # 看这里,在运行[train_op, loss, global_step]的时候,后边配置
  56. # options = run_options, run_metadata = run_metadata
  57. accuracy = sess.run(accuracy_op, feed_dict={x: mnist.validation.images, y_: mnist.validation.labels})
  58. writer.add_run_metadata(run_metadata=run_metadata, tag=("tag%d" % i), global_step=i)
  59. print("After %d training step(s), loss on training batch is %g." % (step, loss_value))
  60. print("After %d training step(s), accuracy on validation batch is %g." % (step, accuracy))
  61. else:
  62. _, loss_value, step = sess.run([train_op, loss, global_step], feed_dict={x: xs, y_: ys})
  63. writer.close()
  64. def main(argv=None):
  65. mnist = input_data.read_data_sets("./MNIST_data", one_hot=True)
  66. train(mnist)
  67. if __name__ == '__main__':
  68. main()
以下是Tensorboard的结果

Tensorflow细节-P290-命名空间与tensorboard上的节点的更多相关文章

  1. Tensorflow学习笔记3:TensorBoard可视化学习

    TensorBoard简介 Tensorflow发布包中提供了TensorBoard,用于展示Tensorflow任务在计算过程中的Graph.定量指标图以及附加数据.大致的效果如下所示, Tenso ...

  2. ZBrush中如何把模型的细节映射到低模上

    我们在ZBrush®雕刻模型的时候,发现模型布线不利于雕刻,这使我们不得不对模型进行重建细分,而重建细分之后的模型细节已经没有了,这个时候我们就需要把原来高模的细节映射到新的模型上面. 接下来我们介绍 ...

  3. kafka在zookeeper上的节点信息和查看方式

    kafka在Zookeeper上的节点如下图: 该图片盗自大牛的博客http://blog.csdn.net/lizhitao/article/details/23744675 服务端开启的情况下,进 ...

  4. Activit的心路历程:获取当前节点的上一节点【可能存在多个】的nodeId

    在我的开发任务中,突然给我提出了一个待办任务需要获取当前任务节点上以任务节点的表单信息,刚开始搞得我有点措手不及,后来仔细是靠后,灵感一下,直接操作流程的bpmn信息就可以获取到节点信息嘛,顺着这个思 ...

  5. Tensorflow细节-Tensorboard可视化-简介

    先搞点基础的 注意注意注意,这里虽然很基础,但是代码应注意: 1.从writer开始后边就错开了 2.writer后可以直接接writer.close,也就是说可以: writer = tf.summ ...

  6. (第一章第二部分)TensorFlow框架之图与TensorBoard

    系列博客链接: (一)TensorFlow框架介绍:https://www.cnblogs.com/kongweisi/p/11038395.html 本文概述: 说明图的基本使用 应用tf.Grap ...

  7. Tensorflow搭建神经网络及使用Tensorboard进行可视化

    创建神经网络模型 1.构建神经网络结构,并进行模型训练 import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt ...

  8. Tensorflow细节-P312-PROJECTOR

    首先进行数据预处理,需要生成.tsv..jpg文件 import matplotlib.pyplot as plt import numpy as np import os from tensorfl ...

  9. Tensorflow细节-P62-完整的神经网络样例程序

    这样是比较好的一个summary命名 (1)'networks'.'layer_%d' % n_layer.'weights'三个命名空间相互叠加 (2) if i % 50 == 0: result ...

随机推荐

  1. UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-22: ordinal not in range(128)

    文件,放在site-package \Python27\Lib\site-packages     sitecustomize.py # -*- coding: utf-8 -*- import sy ...

  2. 阿里巴巴 Java 开发手册 (十二)安全规约

    1. [强制]隶属于用户个人的页面或者功能必须进行权限控制校验. 说明:防止没有做水平权限校验就可随意访问.修改.删除别人的数据,比如查看他人的私信 内容.修改他人的订单. 2. [强制]用户敏感数据 ...

  3. NSMutableArray 删除可变数组元素

    平时使用 NSMutableArray 中经常用到遍历删除数组元素的问题.一般第一个想法是使用一下 forin 就解决了,但是老司机都会知道使用 forin 做删除操作的时候会 crash.报错的原因 ...

  4. Node.js到底是什么

    接触前端也有一段时间了,逐渐开始接触Node.js,刚刚接触Node.js的时候一直都以为Node.js就是JavaScript,当对Node.js有一定的了解之后,其实并不然两者之间有关系,其中的关 ...

  5. Android为TV端助力之解析序列话的JSON

    解析json时报错default constructor not found. class............. 比如 public class MediaRepBean implements P ...

  6. tomcat将控制台输出定向到特定的文件中,并且一天一个文件

    在bin目录的start.bat中,编辑: call "%EXECUTABLE%" start %CMD_LINE_ARGS% 改成: call "%EXECUTABLE ...

  7. Linux环境变量设置declare/typeset

    形而上,质在内!形形色色,追寻本质! declare/typeset declare 或 typeset 是一样的功能,就是在宣告变数的属性 declare 后面并没有接任何参数,那么bash 就会主 ...

  8. mysql的innodb数据存储结构

    ​ 数据库磁盘读取与系统磁盘读取 1,系统从磁盘中读取数据到内存时是以磁盘块(block)为基本单位,位于同一个磁盘块中的数据会被一次性读取出来. 2,innodb存储引擎中有页(Page)的概念,页 ...

  9. [CAN].CAN总线详解

    转自:https://blog.csdn.net/cheatscat/article/details/82886889 CAN(Controller Area Network)总线协议是由 BOSCH ...

  10. Linux操作系统故障排除之Grub信息被删除

    Linux操作系统故障排除之Grub信息被删除 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. [root@yinzhengjie ~]# hexdump -C /dev/sda - ...