TensorFlow官方文档MNIST初学笔记[二]

TensorFlow官方文档MNIST初学笔记[二]

MNIST是一个简单的计算机视觉数据集, 它还包括每个图像的标签, 每个图像是28像素乘以28像素, 我们可以把这个数组变成一个28×28 = 784个数字的向量。MNIST只是一个784维向量空间中的一个点。mnist.train.images具有形状的张量(n维阵列)[55000, 784]

第一维度是图像列表中的索引,第二维度是每个图像中每个像素的索引。对于特定图像中的特定像素,张量中的每个条目是0和1之间的像素强度。

MNIST中的每个图像都有一个相应的标签,0到9之间的数字表示图像中绘制的数字。

Softmax回归

softmax给出了一个0到1之间的值列表,加起来为1,当我们训练更复杂模型,最后一步将是softmax的一层。softmax其实就是,e^每个输出结果,然后归一化

更紧凑,我们可以写:

现在我们来看看TensorFlow可以使用的东西。

实现回归

为了在Python中进行有效的数值计算,我们通常使用像NumPy这样的数据库 ,可以使用诸如Python之外的矩阵乘法等昂贵的操作,使用其他语言实现的高效代码。不幸的是,每次操作都需要重新切换到Python的开销很大。如果要在GPU上运行计算或以分布式方式运行计算,那么这种开销尤其糟糕,传输数据的成本很高。TensorFlow也在Python之外进行了大量的工作,但它需要进一步的工作来避免这种开销。TensorFlow不是独立于Python运行单一昂贵的操作,而是可以描述完全在Python之外运行的交互操作的图形。(这样的方法可以在几台机器学习库中看到。)

要使用TensorFlow,首先我们需要导入它。

import tensorflow as tf

通过操纵符号变量来描述这些交互操作

x = tf.placeholder(tf.float32, [None, 784])

当我们要求TensorFlow运行计算时,我们将输入一个值。我们希望能够输入任何数量的MNIST图像,每个图像被平铺成784维的向量。我们将其表示为具有形状的浮点数的2-D张量[None, 784]。(这里None表示尺寸可以是任意长度。)

W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

W具有[784,10]的形状

我们现在可以实现我们的模型。它只需要一行来定义它!

y = tf.nn.softmax(tf.matmul(x, W) + b)

训练

定义损失函数“交叉熵”

为了实现交叉熵,我们需要先添加一个新的占位符来输入正确答案:

y_ = tf.placeholder(tf.float32, [None, 10])

cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

tf.log计算每个元素的对数y,接下来,我们将每个元素乘以y_相应的元素tf.log(y)

tf.reduce_mean计算批次中所有示例的平均值

其中tf.reduce_mean使用方法:

# ‘x‘ is [[1., 1.]
#         [2., 2.]]
tf.reduce_mean(x) ==> 1.5
tf.reduce_mean(x, 0) ==> [1.5, 1.5]
tf.reduce_mean(x, 1) ==> [1.,  2.]

在源代码中,我们不使用这个公式,因为它在数值上是不稳定的

 请考虑使用

tf.nn.softmax_cross_entropy_with_logits

由于TensorFlow知道你计算的整个图形,它可以自动使用 BP算法有效地确定把损失降到最低。然后可以应用您选择的优化算法来修改变量并减少损失。

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

在这种情况下,我们要求TensorFlow cross_entropy使用 学习率为0.5 的 梯度下降算法进行最小化。梯度下降是一个简单的过程,其中TensorFlow简单地将每个变量在减少成本的方向上稍微移动一点。

我们现在可以在以下模式中启动InteractiveSession

sess = tf.InteractiveSession()

首先必须创建一个操作来初始化我们创建的变量:

tf.global_variables_initializer().run()

我们来训练 - 我们将运行1000次训练步骤!

for _ in range(1000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

循环的每一步,我们从训练集中得到一百个随机数据点的“批次”。我们运行train_step,feed中的批次数据来代替placeholders。

评估我们的模型

tf.argmax(y,1)我们的模型认为是每个输入最有可能的标签,而tf.argmax(y_,1)正确的标签。我们可以tf.equal用来检查我们的预测是否符合真相。

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))

这给了我们一个布尔的列表。为了确定哪个部分是正确的,我们转换为浮点数,然后取平均值。例如, [True, False, True, True]会变成[1,0,1,1]哪一个0.75

accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

最后,我们要求我们对测试数据的准确性。

print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
时间: 2024-10-19 09:54:34

TensorFlow官方文档MNIST初学笔记[二]的相关文章

TensorFlow官方文档入门笔记[一]

TensorFlow官方文档入门笔记[一] 张量 3 # a rank 0 tensor; this is a scalar with shape [] [1., 2., 3.] # a rank 1 tensor; this is a vector with shape [3] [[1., 2., 3.], [4., 5., 6.]] # a rank 2 tensor; a matrix with shape [2, 3] [[[1., 2., 3.]], [[7., 8., 9.]]] #

官方文档 恢复备份指南二 Getting Started with RMAN

本章对RMAN进行基本的熟悉和了解 1.Overview of the RMAN Environment RMAN运行时需要的最小环境: target database          :RMAN用target命令连接的数据库,在该数据库上执行备份和恢复操作,并备份信息(RMAN reposity 资源库)记录在target数据库的控制文件中. RMAN client              :rman客户端,即RMAN可执行程序.在$ORACLE_HOME/bin下 RMAN运行时可能需要

tensorflow官方文档中的sub 和mul中的函数已经在API中改名了

在照着tensorflow 官方文档和极客学院中tensorflow中文文档学习tensorflow时,遇到下面的两个问题: 1)AttributeError: module 'tensorflow' has no attribute 'sub' #进入一个交互式Tensorflow会话 import tensorflow as tf sess = tf.InteractiveSession() x = tf.Variable([1.0,2.0]) a = tf.constant([3.0,3.

TensorFlow 官方文档中文版

http://wiki.jikexueyuan.com/list/deep-learning/ TensorFlow 官方文档中文版 你正在阅读的项目可能会比 Android 系统更加深远地影响着世界! 缘起 2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,同日,极客学院组织在线TensorFlow中文文档翻译. 机器学习作为人工智能的一种类型,可以让软件根据大量的数据来对未来的情况进行阐述或预判.如今,领先的科技巨头无不在机器学习下予以极大投入.Faceboo

TensorFlow 官方文档中文版 --技术文档

1.文档预览 2.文档下载 TensorFlow官方文档中文版-v1.2.pdf 提取码:pt7p 原文地址:https://www.cnblogs.com/qikeyishu/p/10498789.html

Mysql优化(出自官方文档) - 第十二篇(优化锁操作篇)

目录 Mysql优化(出自官方文档) - 第十二篇(优化锁操作篇) 1 Internal Locking Methods 2 Metadata Locking 3 External Locking Mysql优化(出自官方文档) - 第十二篇(优化锁操作篇) 1 Internal Locking Methods 这里介绍Mysql的几种锁,该锁由Mysql自行进行管理,用户不需要处理该锁. Row-Level Locking 对于InnoDB,行锁可以通过SELECT ... FOR UPDAT

Spring 4 官方文档学习(十二)View技术

1.介绍 Spring 有很多优越的地方,其中一个就是将view技术与MVC框架的其他部分相隔离.例如,在JSP存在的情况下使用Groovy Markup Templates 还是使用Thymeleaf,仅仅是一个配置问题. 本章覆盖了主要的view技术,嗯嗯,可以与Spring结合的那些,并简明的说明了如何增加新的view技术. 本章假定你已经熟悉了Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图 -- 它覆盖了views如何耦合到MVC框架

Tensorflow官方文档中文版——第一章

第一示例: import tensorflow as tf import numpy as np x_data=np.float32(np.random.rand(2,100))#随机输入 y_data=np.dot([0.1,0.2],x_data)+0.3#点乘 b=tf.Variable(tf.zeros([1])) W=tf.Variable(tf.random_uniform([1,2],-1,1))#-1到1之间的均匀分布中取出值构成[1*2]的矩阵 y=tf.matmul(W,x_

seajs官方文档的学习笔记(一)

########### 模块 https://github.com/seajs/seajs/issues/240 ##################### sea.js 专注于前端开发领域里的 JS 模块: 1. 模块是一段 JavaScript 代码,具有统一的基本书写格式. 2. 模块之间通过基本交互规则,能彼此引用,协同工作. 模块定义规范(Module Definition Specification):对[基本书写格式]与[基本交互规则]的清楚描述. 有CommonJS 社区的 Mo