TensorFlow入门示例教程
本部分的代码目前都是基于GitHub大佬非常详细的TensorFlow的教程上,首先给出链接:
https://github.com/aymericdamien/TensorFlow-Examples/
本人对其中部分代码做了注释和中文翻译,会持续更新,目前包括:
1. 传统多层神经网络用语MNIST数据集分类(代码讲解,翻译)
1. 传统多层神经网络用语MNIST数据集分类(代码讲解,翻译)
1 """ Neural Network.
2
3 A 2-Hidden Layers Fully Connected Neural Network (a.k.a Multilayer Perceptron)
4 implementation with TensorFlow. This example is using the MNIST database
5 of handwritten digits (http://yann.lecun.com/exdb/mnist/).
6
7 Links:
8 [MNIST Dataset](http://yann.lecun.com/exdb/mnist/).
9
10 Author: Aymeric Damien
11 Project: https://github.com/aymericdamien/TensorFlow-Examples/
12 """
13
14 from __future__ import print_function
15
16 # Import MNIST data
17 # 导入mnist数据集
18 from tensorflow.examples.tutorials.mnist import input_data
19 mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)
20
21 # 导入tf
22 import tensorflow as tf
23
24 # Parameters
25 # 设定各种超参数
26 learning_rate = 0.1 # 学习率
27 num_steps = 500 # 训练500次
28 batch_size = 128 # 每批次取128个样本训练
29 display_step = 100 # 每训练100步显示一次
30
31 # Network Parameters
32 # 设定网络的超参数
33 n_hidden_1 = 256 # 1st layer number of neurons
34 n_hidden_2 = 256 # 2nd layer number of neurons
35 num_input = 784 # MNIST data input (img shape: 28*28)
36 num_classes = 10 # MNIST total classes (0-9 digits)
37
38 # tf Graph input
39 # tf图的输入,因为不知道到底输入大小是多少,因此设定占位符
40 X = tf.placeholder("float", [None, num_input])
41 Y = tf.placeholder("float", [None, num_classes])
42
43 # Store layers weight & bias
44 # 初始化w和b
45 weights = {
46 'h1': tf.Variable(tf.random_normal([num_input, n_hidden_1])),
47 'h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),
48 'out': tf.Variable(tf.random_normal([n_hidden_2, num_classes]))
49 }
50 biases = {
51 'b1': tf.Variable(tf.random_normal([n_hidden_1])),
52 'b2': tf.Variable(tf.random_normal([n_hidden_2])),
53 'out': tf.Variable(tf.random_normal([num_classes]))
54 }
55
56
57 # Create model
58 # 创建模型
59 def neural_net(x):
60 # Hidden fully connected layer with 256 neurons
61 # 隐藏层1,全连接了256个神经元
62 layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])
63 # Hidden fully connected layer with 256 neurons
64 # 隐藏层2,全连接了256个神经元
65 layer_2 = tf.add(tf.matmul(layer_1, weights['h2']), biases['b2'])
66 # Output fully connected layer with a neuron for each class
67 # 最后作为输出的全连接层,对每一分类连接一个神经元
68 out_layer = tf.matmul(layer_2, weights['out']) + biases['out']
69 return out_layer
70
71 # Construct model
72 # 开启模型
73 # 输入数据X,得到得分向量logits
74 logits = neural_net(X)
75 # 用softmax分类器将得分向量转变成概率向量
76 prediction = tf.nn.softmax(logits)
77
78 # Define loss and optimizer
79 # 定义损失和优化器
80 # 交叉熵损失, 求均值得到---->loss_op
81 loss_op = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(
82 logits=logits, labels=Y))
83 # 优化器使用的是Adam算法优化器
84 optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)
85 # 最小化损失得到---->可以训练的train_op
86 train_op = optimizer.minimize(loss_op)
87
88 # Evaluate model
89 # 评估模型
90 # tf.equal() 逐个元素进行判断,如果相等就是True,不相等,就是False。
91 correct_pred = tf.equal(tf.argmax(prediction, 1), tf.argmax(Y, 1))
92 # tf.cast() 数据类型转换----> tf.reduce_mean() 再求均值
93 accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))
94
95 # Initialize the variables (i.e. assign their default value)
96 # 初始化这些变量(作用比如说,给他们分配随机默认值)
97 init = tf.global_variables_initializer()
98
99 # Start training
100 # 现在开始训练啦!
101 with tf.Session() as sess:
102
103 # Run the initializer
104 # 运行初始化器
105 sess.run(init)
106
107 for step in range(1, num_steps+1):
108 # 每批次128个训练,取出这128个对应的data:x;标签:y
109 batch_x, batch_y = mnist.train.next_batch(batch_size)
110 # Run optimization op (backprop)
111 # train_op是优化器得到的可以训练的op,通过反向传播优化模型
112 sess.run(train_op, feed_dict={X: batch_x, Y: batch_y})
113 # 每100步打印一次训练的成果
114 if step % display_step == 0 or step == 1:
115 # Calculate batch loss and accuracy
116 # 计算每批次的是损失和准确度
117 loss, acc = sess.run([loss_op, accuracy], feed_dict={X: batch_x,
118 Y: batch_y})
119 print("Step " + str(step) + ", Minibatch Loss= " + \
120 "{:.4f}".format(loss) + ", Training Accuracy= " + \
121 "{:.3f}".format(acc))
122
123 print("Optimization Finished!")
124
125 # Calculate accuracy for MNIST test images
126 # 看看在测试集上,我们的模型表现如何
127 print("Testing Accuracy:", \
128 sess.run(accuracy, feed_dict={X: mnist.test.images,
129 Y: mnist.test.labels}))
TensorFlow入门示例教程的更多相关文章
- [转] Struts2入门示例教程
		原文地址:http://blog.csdn.net/wwwgeyang777/article/details/19078545/ 回顾Struts2的使用过程,网上搜的教程多多少少都会有点问题,重新记 ... 
- DWR 3.0 入门示例教程
		DWR(Direct Web Remoting) DWR is a Java library that enables Java on the server and JavaScript in a b ... 
- Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1
		摘要: Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1 安装遇到问题请文末留言. 悦动智能公众号:aibbtcom AI这个概念好像突然就 ... 
- 【转】真正从零开始,TensorFlow详细安装入门图文教程!(帮你完成那个最难的从0到1)
		AI这个概念好像突然就火起来了,年初大比分战胜李世石的AlphaGo成功的吸引了大量的关注,但其实看看你的手机上的语音助手,相机上的人脸识别,今日头条上帮你自动筛选出来的新闻,还有各大音乐软件的歌曲& ... 
- 真正从零开始,TensorFlow详细安装入门图文教程!
		本文转载地址:https://www.leiphone.com/news/201606/ORlQ7uK3TIW8xVGF.html AI这个概念好像突然就火起来了,年初大比分战胜李世石的AlphaGo ... 
- TensorFlow入门,基本介绍,基本概念,计算图,pip安装,helloworld示例,实现简单的神经网络
		TensorFlow入门,基本介绍,基本概念,计算图,pip安装,helloworld示例,实现简单的神经网络 
- TensorFlow入门教程集合
		TensorFlow入门教程之0: BigPicture&极速入门 TensorFlow入门教程之1: 基本概念以及理解 TensorFlow入门教程之2: 安装和使用 TensorFlow入 ... 
- ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)
		前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ... 
- ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑
		前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 # ... 
随机推荐
- 如何使用c#编写单片机程序
			 因为个人喜爱想研究单片机,但是不太会c,然后再找资料研究有没有其他的方法发现国外的c# nanoframework 框架可以编写单片机程序,本文我将会用自己踩过的坑来总结一些c#编写单片机的一些经 ... 
- How to check in Windows if you are using UEFI
			You might be wondering if Windows is using UEFI or the legacy BIOS, it's easy to check. Just fire up ... 
- Java多线程专题2: JMM(Java内存模型)
			合集目录 Java多线程专题2: JMM(Java内存模型) Java中Synchronized关键字的内存语义是什么? If two or more threads share an object, ... 
- Antd组件Table树型多选全选问题
			组件库antd里面的树型选择不能做到勾选父组件然后一起勾选子组件情况,我也不知道是组件库的问题还是原本设计就是这样 刚好组件库存在rowselection的配置项,既然存在拓展方法,又遇到需求,那么就 ... 
- tcp 中 FLAGS字段,几个标识:SYN, FIN, ACK, PSH, RST, URG.
			在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段.它们的含义是: 1.SYN表示建立 ... 
- HTTP消息头(HTTP headers)-HTTP请求头与HTTP响应头
			感谢大佬:https://itbilu.com/other/relate/E1T0q4EIe.html HTTP协议将传输的信息分隔为两部分:HTTP信息头.HTTP信息体.通过HTTP头信息,使客户 ... 
- Annotation深入研究——@Documented注释使用
			Documented注释的作用及其javadoc文档生成工具的使用 代码放在MyDocumentedtAnnotationDemo.java文件中 package org.yu.demo16.docu ... 
- tomcat实现多虚拟主机
			一.安装tomcat 请查看:二进制安装tomat 二.配置虚拟主机 2.1 修改server.xml # vim /usr/local/tomcat/conf/server.xml ...省略 #在 ... 
- Linux中使用systemctl操作服务、新建自定义服务
			Linux有12种Unit,对于个人来讲,用的最多的是Service Unit,下面的Unit均指Service Unit(服务单元) # 启动Unit systemctl start appname ... 
- python多版本切换
			环境:Macbook MacOS自带的python2.7,在命令行中输入python后会显示2.7版本 如何切换成新版本? 一.修改用户配置环境变量~/.bash_profile 确定新版本的安装位置 ... 
