TensorFlow的基本介绍及Hello,world

转载自:
http://www.tensorfly.cn/tfdoc/get_started/basic_usage.html
https://blog.csdn.net/sarsscofy/article/details/78541836

####基本使用:

  1. 使用(graph)来表示计算任务
  2. 在被称之为 会话 (Session) 的上下文 (context) 中执行图.
  3. 使用 tensor 表示数据.
  4. 通过 变量 (Variable) 维护状态.
  5. 使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据.

####综述:
图中的节点被称之为 op (operation 的缩写)。 一个 op 获得 0 个或多个 Tensor(图中的有向边), 执行计算, 产生 0 个或多个 Tensor.。每个 Tensor 是一个类型化的多维数组。

####计算图(graph)
TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段。
在构建阶段, op 的执行步骤 被描述成一个图。
在执行阶段, 使用会话(Session)执行执行图中的 op。
例如, 通常在构建阶段创建一个图来表示和训练神经网络, 然后在执行阶段反复执行图中的训练 op。
TensorFlow 支持 C, C++, Python 编程语言。目前, TensorFlow 的 Python 库更加易用, 它提供了大量的辅助函数来简化构建图的工作, 这些函数尚未被 C 和 C++ 库支持。

####构建图
构建图的第一步, 是创建源 op (source op)。源 op 不需要任何输入, 例如 常量 (Constant). 源 op 的输出被传递给其它 op 做运算。
Python 库中, op 构造器的返回值代表被构造出的 op 的输出, 这些返回值可以传递给其它 op 构造器作为输入。
TensorFlow Python 库有一个默认图 (default graph), op 构造器可以为其增加节点。这个默认图对 许多程序来说已经足够用了。

####在一个会话中启动图
构造阶段完成后, 才能启动图。启动图的第一步是创建一个 Session 对象, 如果无任何创建参数, 会话构造器将启动默认图。
Session 对象在使用完后需要关闭以释放资源。 除了显式调用 close 外, 也可以使用 “with” 代码块 来自动完成关闭动作。
在实现上, TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU)。 一般你不需要显式指定使用 CPU 还是 GPU, TensorFlow 能自动检测。 如果检测到 GPU, TensorFlow 会尽可能地利用找到的第一个 GPU 来执行操作。
如果机器上有超过一个可用的 GPU, 除第一个外的其它 GPU 默认是不参与计算的。 为了让 TensorFlow 使用这些 GPU, 你必须将 op 明确指派给它们执行。 with…Device 语句用来指派特定的 CPU 或 GPU 执行操作。

####实践项目
MNIST是机器学习中的“hello,world”。该项目分为一下几个步骤

  1. 数据集的下载(不要解压),网址为:http://yann.lecun.com/exdb/mnist/,下载后在运行代码目录下新建MNIST_data文件夹,把上述四个文件放入该文件夹下。
    train-images-idx3-ubyte.gz: training set images (9912422 bytes)
    train-labels-idx1-ubyte.gz: training set labels (28881 bytes)
    t10k-images-idx3-ubyte.gz: test set images (1648877 bytes)
    t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)

  2. 编写自动安装和下载MNIST数据集的python代码,代码写入文件input_data.py中,该文件和运行代码同一个目录,input_data.py文件内容编码为utf-8。(代码部分在下面显示)

  3. 编写运行代码文件Test_1.py。

两个.py文件加一个文件夹如下图所示,
这里写图片描述
MNIST_data文件夹下有四个下载的数据文件;
input_data.py是自动下载和安装的MNIST数据集的python代码;
Test_1.py是运行代码;
其中input_data.py代码如下:

"""Functions for downloading and reading MNIST data."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_functionimport gzip
import os
import tempfileimport numpy
from six.moves import urllib
from six.moves import xrange  # pylint: disable=redefined-builtin
import tensorflow as tf
from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets

其中Test_1.py代码如下:

#!/usr/bin/env python3  
# -*- coding: utf-8 -*- 
import input_data
import tensorflow as tfmnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
#x不是一个特定的值,而是一个占位符placeholder,我们在TensorFlow运行计算时输入这个值。
#我们希望能够输入任意数量的MNIST图像,每一张图展平成784维的向量。
#我们用2维的浮点数张量来表示这些图,这个张量的形状是[None,784 ]。
#(这里的None表示此张量的第一个维度可以是任何长度的。)
x = tf.placeholder(tf.float32, [None, 784])
#权重值,初始值全为0
W = tf.Variable(tf.zeros([784,10]))
#偏置量,初始值全为0
b = tf.Variable(tf.zeros([10]))#建立模型,y是匹配的概率
#tf.matmul(x,W)表示x乘以W
#y是预测,y_是实际
y = tf.nn.softmax(tf.matmul(x,W) + b)#为计算交叉熵,添加的placeholder
y_ = tf.placeholder("float", [None,10])
#交叉熵
cross_entropy = -tf.reduce_sum(y_*tf.log(y))
#用梯度下降算法(gradient descent algorithm)以0.01的学习速率最小化交叉熵
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)#初始化我们创建的变量
init = tf.global_variables_initializer()#在Session里面启动模型
sess = tf.Session()
sess.run(init)#训练模型
#循环的每个步骤中,都会随机抓取训练数据中的100个批处理数据点,然后用这些数据点作为参数替换之前的占位符来运行train_step
#即:使用的随机梯度下降训练方法
for i in range(1000):batch_xs, batch_ys = mnist.train.next_batch(100)sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})#-------------------模型评估----------------------
#判断预测标签和实际标签是否匹配 
#tf.argmax 找出某个tensor对象在某一维上的其数据最大值所在的索引值
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))#计算所学习到的模型在测试数据集上面的正确率 
print (sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

运行结果显示,每次运行的结果可能不一样。

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
2018-08-15 19:42:54.657354: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU computations.
2018-08-15 19:42:54.657354: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE2 instructions, but these are available on your machine and could speed up CPU computations.
2018-08-15 19:42:54.657354: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE3 instructions, but these are available on your machine and could speed up CPU computations.
2018-08-15 19:42:54.657354: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2018-08-15 19:42:54.657354: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2018-08-15 19:42:54.658354: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2018-08-15 19:42:54.658354: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2018-08-15 19:42:54.658354: W c:\l\work\tensorflow-1.1.0\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
2018-08-15 19:42:54.753360: I c:\l\work\tensorflow-1.1.0\tensorflow\core\common_runtime\gpu\gpu_device.cc:887] Found device 0 with properties: 
name: GeForce GT 630
major: 3 minor: 0 memoryClockRate (GHz) 0.8755
pciBusID 0000:01:00.0
Total memory: 2.00GiB
Free memory: 1.72GiB
2018-08-15 19:42:54.754360: I c:\l\work\tensorflow-1.1.0\tensorflow\core\common_runtime\gpu\gpu_device.cc:908] DMA: 0 
2018-08-15 19:42:54.754360: I c:\l\work\tensorflow-1.1.0\tensorflow\core\common_runtime\gpu\gpu_device.cc:918] 0:   Y 
2018-08-15 19:42:54.754360: I c:\l\work\tensorflow-1.1.0\tensorflow\core\common_runtime\gpu\gpu_device.cc:977] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 630, pci bus id: 0000:01:00.0)
0.9117Process finished with exit code 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中美首份8000字长文解析全球热点脑机接口(重磅干货)

来源:硅谷密探摘要:“我们所想象的一切,都会变为现实。”如果说当今什么技术最接近科幻,那么一定是脑机接口。脑机接口的研究已经实现了意识打字(1分钟之内平均输入39个字母),还实现了心灵控制&…

一文读懂2019年IT及大数据行业趋势

来源:智慧网点建设运营2018即将过去,今年区块链、5G、芯片、量子计算成为大家不断提及的技术重点,明年大数据科学还会有哪些发展方向,IT行业还有哪些发展趋势?众多机构针对未来产业发展做出预测,小编整理如…

openMP的简单使用

安装,参考:https://blog.csdn.net/augusdi/article/details/8808226 如图所示,右键工程名->属性->C/C>语言,找到OpenMP支持,更改设置即可。 代码编程,参考:https://blog.csdn.net/zh…

车联网系统会不会只是智能手机系统的翻版?

来源:智能相对论摘要:对于当前大热的车联网技术,各家车企都像“王婆卖瓜”一样夸赞自己,在一片叫好声中,我们需要厘清一个问题,车联网系统到底是不是“另一个”智能手机系统?在BAT集体入局车联网…

清华、中科大实现了量子版本的GAN,平均保真度98.8%

作者:Ling Hu等编译:机器之心 刘晓坤、张倩摘要:清华和中科大的研究者在 Science Advances 上发表论文,他们在超导量子电路上实现了第一个生成对抗学习的原理验证,即量子版本的 GAN。实验中生成的单个 qubit 的平均保真…

一个令人心醉的谜题——DNA和RNA是如何演化出美妙的螺旋结构?

来源:原理丨公众号在现代科学中,一直存在一个匪夷所思到令无数科学家心醉的谜题——DNA和RNA究竟是如何演化出这种美妙的螺旋结构的?最近,佐治亚理工学院的一组研究人员在超分子聚合物的形成过程中,发现了一种全然自发…

AI人才「用工荒」如何解决?看看这几家顶级公司的应对策略

来源: Forbes编译: 机器之心 太浪在未来几年,人工智能可能会成为众多行业的战略选择,但有一个重大的挑战:招人。如何避免招募 AI 人才的误区?这里有来自几家顶级公司的建议。招到 AI 人才后,可能…

AI芯片混战,谁能挑战英伟达?

来源:forbes我准备写一篇预测未来一年的AI芯片,以及英伟达如何应对挑战的文章,但我很快意识到,文章要比我预期的要长得多。由于有很多内容要介绍,我决定把文章分为3个部分。第1部分:简介,以及分…

webServices 应该支持Get和Post调用,在web.config应该增加以下代码

1 #region Tip:使用说明2 //webServices 应该支持Get和Post调用&#xff0c;在web.config应该增加以下代码3 //<webServices>4 // <protocols>5 // <add name"HttpGet"/>6 // <add nam…

VS2017安装openGL

项目名->管理NuGet程序包->浏览->搜索nupengl&#xff0c;下载安装即可。 参考博客&#xff1a;https://blog.csdn.net/HY_JT/article/details/79482556 还可以参考博客&#xff1a;https://blog.csdn.net/yinglang19941010/article/details/50166343 #include <c…

从专利数量看全球最具创新力的50家公司

来源&#xff1a;资本实验室专利&#xff0c;在很大程度上不仅代表着一家企业的技术实力&#xff0c;也代表着一个国家的长期发展潜力。很多机构也习惯用专利数量来衡量企业或国家的创新能力。为保护自身的技术发明&#xff0c;全球大型公司都会在很多国家申请专利&#xff0c;…

2019年深度学习的十大预测

来源&#xff1a;云栖社区丨公众号摘要&#xff1a;如果连思考方式都是错的&#xff0c;机器学习肯定不会有很大的进步&#xff01;2018年已结束&#xff0c;现在是开始预测2019深度学习的时候了。以下是我之前对2017年和2018年的预测和回顾&#xff1a;关于2017年预测和回顾。…

一张图看懂AR至GL数据流

转载于:https://www.cnblogs.com/wanghang/p/6299101.html

腾讯帝国的野蛮生长史

来源&#xff1a; CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;译者&#xff1a;弯月如今的社交巨头腾讯&#xff0c;可以说是很多厂商可望而不可及的存在。手握微信和QQ这两张王牌&#xff0c;其制霸着整个国民的社交脉络。不过在腾讯成立之初&#xff0c;也是经过了漫…

[LeetCode] Plus One

Given a non-negative number represented as an array of digits, plus one to the number. The digits are stored such that the most significant digit is at the head of the list. 这题有意思啊&#xff0c;虽然是easy题但我还是折腾了很久&#xff0c;一开始做出一个逗…

六大“未来式”存储器,谁将脱颖而出?

来源&#xff1a;半导体行业观察摘要&#xff1a;最近&#xff0c;一篇回顾该领域现状的论文对六种最有前景的技术进行了盘点和解读。对神经形态计算的浓厚兴趣刺激人们研发出一系列全新的存储设备&#xff0c;这些设备可以复制生物神经元和突触功能。最近&#xff0c;一篇回顾…

cuda学习

CUDA 安装测试部分 https://blog.csdn.net/sunmc1204953974/article/details/51000970 CUDA的HelloWorld程序编写 https://www.cnblogs.com/neopenx/p/4643705.html 对多线程并行处理的解释&#xff1a;https://blog.csdn.net/sunmc1204953974/article/details/51025801 以下的…

英特尔第七任CEO敲定 斯旺为何受到董事会青睐?

来源&#xff1a;网易科技2019年1月最后一天&#xff0c;芯片巨头英特尔公司(Intel)宣布任命临时首席执行官罗伯特斯旺(Robert Swan)为正式CEO&#xff0c;从而结束了长达数月的猎头工作。此前&#xff0c;英特尔前任CEO布莱恩柯再奇(Brian Krzanich)因与员工存在“暧昧关系”而…

图灵奖得主长文报告:是什么开启了计算机架构的新黄金十年?

来源&#xff1a;AI科技评论摘要&#xff1a;2017 年图灵奖的两位得主 John L. Hennessy 和 David A. Patterson 就是这个新浪潮的见证者和引领者。近几年来&#xff0c;不论是普通消费者还是科研人员们都可以感受到两种浪潮&#xff0c;一种是CPU速度的提升越来越不显著了&…

ubuntu安装wine之后进不了系统

以前曾经装过一次wine&#xff0c;安装的时候没碰到什么问题&#xff0c;但卸载的时候却出问题了&#xff0c;把我nouvean显卡给删除了。 自然&#xff0c;我下一次启动的时候就进不了桌面了。所以我得重装一次&#xff0c;那一次重装的是整个系统&#xff01; 今天突然觉得evi…