TensorFlow博客翻译——用TensorFlow在云端进行机器学习
https://github.com/tensorflow/tensorflow
原文地址
Machine Learning in the Cloud, with TensorFlow
用TensorFlow在云端进行机器学习

Machine Learning projects can come in many sizes, and as we’ve seen with our open source offering TensorFlow, projects often need to scale up. Some small tasks are best handled with a local solution running on one’s desktop, while large scale applications require both the scale and dependability of a hosted solution. Google Cloud Machine Learning aims to support the full range and provide a seamless transition from local to cloud environment.
机器学习项目可以是各种大小的,就像我们已经看到的我们提供的开源的TensorFlow,项目通常需要去向上扩展。一些运行在个人的电脑上的本地解决方案的小项目是最容易掌握的;与此同时,大规模的应用需要较大的规模和hosted依赖的解决方案。Google的云机器学习,目标是为了支持全领域的解决方案,并且提供一个从本地到云环境的无缝过度。
云机器学习提供了允许用户在TensorFlow的基础上运行客户的分布式学习算法的功能。在深度学习的容量之上,增强了Cloud Translate API,Cloud Vision API, and Cloud Speech API,我们提供了一些易于用于常用任务中的例子,比如:采用非常快的趋于一致属性的linear regression/classification(基于SDCA算法)和用几百个训练例子构建一个客户图像分类模型 (基于DeCAF算法)。
通过阅读TensorFlow的论文和相关博文之后,接下来,对TensorFlow进行一个简单的初步运行。
1、安装了Ubuntu 16.04.(ubuntu-16.04-desktop-amd64.iso)
2、sudo apt-get update
3、# Ubuntu/Linux 64-bit $ sudo apt-get install Python-pip python-dev
4、# Ubuntu/Linux 64-bit, CPU only: $ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
5、测试安装结果:
$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>
6、测试结果运行正常,结合之前的论文,可以在这里明显的看到Session的用法,包括它的run()接口
Github上除了有TensorFlow的源码库之外,还有一些很不错的适合入门的资源。现在将目前已经接触到的资源整理出来,和大家分享。
1、TensorFlow源码库
https://github.com/tensorflow/tensorflow
2、TensorFlow中文文档
https://github.com/jikexueyuanwiki/tensorflow-zh
3、TensorFlow入门例子库1,每个例子都有对应的Notebook说明。
https://github.com/pkmital/tensorflow_tutorials
4、TensorFlow入门例子库2
https://github.com/nlintz/TensorFlow-Tutorials
5、TensorFlow入门例子库3,每个例子都有对应的Notebook说明。
https://github.com/aymericdamien/TensorFlow-Examples
TensorFlow学习课程:
http://learningtensorflow.com/index.html
这个网站按照入门的顺序,安排课程介绍如何学习TensorFlow,并且配备了一些例子和资料,很适合入门初学者学习。
http://blog.csdn.net/snsn1984/article/details/51372501#
例子源码地址:
根据网上的入门例子,一点点的熟悉代码和TensorFlow。对这个基本的例子,做一个注释,备忘之余分享给同样入门的初学者。
import tensorflow as tf a = tf.constant(2)
b = tf.constant(3) #把a,b定义为tensorflow的常量,并且赋值。 with tf.Session() as sess:
print "a=2, b=3"
print "Addition with constants: %i" % sess.run(a+b)
print "Multiplication with constants: %i" % sess.run(a*b) #使用Session的run()输出a+b和a*b的结果。使用with <span style="font-family: Arial, Helvetica, sans-serif;">tf.Session() as sess这种用法,在sess.run()结束之后,不用调用sess.close()释放资源 a = tf.placeholder(tf.int16)
b = tf.placeholder(tf.int16) #把a,b定义成为tf.int16类型的占位符,并没有放具体的数值进去。 add = tf.add(a, b)
mul = tf.mul(a, b) <span style="font-family: Arial, Helvetica, sans-serif;">#在a,b两个占位符之上,定义了两个操作,add和mul。</span> with tf.Session() as sess:
print "Addition with variables: %i" % sess.run(add, feed_dict={a: 2, b: 3})
print "Multiplication with variables: %i" % sess.run(mul, feed_dict={a: 2, b: 3}) #给a,b赋值,并且对他们进行前文定义的add和mul操作。 matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2) #定义两个常量矩阵,并且为这两个矩阵定义了一个matmul操作product。 with tf.Session() as sess:
result = sess.run(product)
print result #运行product操作,并且将结果result输出。
五、
import numpy as np
import tensorflow as tf # Import MINST data
import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)
#这里主要是导入数据,数据通过input_data.py已经下载到/tmp/data/目录之下了,这里下载数据的时候,需要提前用浏览器尝试是否可以打开
#http://yann.lecun.com/exdb/mnist/,如果打不开,下载数据阶段会报错。而且一旦数据下载中断,需要将之前下载的未完成的数据清空,重新
#进行下载,否则会出现CRC Check错误。read_data_sets是input_data.py里面的一个函数,主要是将数据解压之后,放到对应的位置。
# In this example, we limit mnist data
Xtr, Ytr = mnist.train.next_batch(5000) #5000 for training (nn candidates)
Xte, Yte = mnist.test.next_batch(200) #200 for testing
#mnist.train.next_batch,其中train和next_batch都是在input_data.py里定义好的数据项和函数。此处主要是取得一定数量的数据。 # Reshape images to 1D
Xtr = np.reshape(Xtr, newshape=(-1, 28*28))
Xte = np.reshape(Xte, newshape=(-1, 28*28))
#将二维的图像数据一维化,利于后面的相加操作。
# tf Graph Input
xtr = tf.placeholder("float", [None, 784])
xte = tf.placeholder("float", [784])
#设立两个空的类型,并没有给具体的数据。这也是为了基于这两个类型,去实现部分的graph。 # Nearest Neighbor calculation using L1 Distance
# Calculate L1 Distance
distance = tf.reduce_sum(tf.abs(tf.add(xtr, tf.neg(xte))), reduction_indices=1)
# Predict: Get min distance index (Nearest neighbor)
pred = tf.arg_min(distance, 0)
#最近邻居算法,算最近的距离的邻居,并且获取该邻居的下标,这里只是基于空的类型,实现的graph,并未进行真实的计算。
accuracy = 0.
# Initializing the variables
init = tf.initialize_all_variables()
#初始化所有的变量和未分配数值的占位符,这个过程是所有程序中必须做的,否则可能会读出随机数值。
# Launch the graph
with tf.Session() as sess:
sess.run(init) # loop over test data
for i in range(len(Xte)):
# Get nearest neighbor
nn_index = sess.run(pred, feed_dict={xtr: Xtr, xte: Xte[i,:]})
# Get nearest neighbor class label and compare it to its true label
print "Test", i, "Prediction:", np.argmax(Ytr[nn_index]), "True Class:", np.argmax(Yte[i])
# Calculate accuracy
if np.argmax(Ytr[nn_index]) == np.argmax(Yte[i]):
accuracy += 1./len(Xte)
print "Done!"
print "Accuracy:", accuracy
#for循环迭代计算每一个测试数据的预测值,并且和真正的值进行对比,并计算精确度。该算法比较经典的是不需要提前训练,直接在测试阶段进行识别。
相关API:
tf.reduce_sum(input_tensor, reduction_indices=None, keep_dims=False, name=None)
Computes the sum of elements across dimensions of a tensor.
Reduces input_tensor along the dimensions given in reduction_indices. Unless keep_dims is true, the rank of the tensor is reduced by 1 for each entry in reduction_indices. If keep_dims is true, the reduced dimensions are retained with length 1.
If reduction_indices has no entries, all dimensions are reduced, and a tensor with a single element is returned.
For example:
# 'x' is [[1, 1, 1]
# [1, 1, 1]]
tf.reduce_sum(x) ==> 6
tf.reduce_sum(x, 0) ==> [2, 2, 2]
tf.reduce_sum(x, 1) ==> [3, 3]
tf.reduce_sum(x, 1, keep_dims=True) ==> [[3], [3]]
tf.reduce_sum(x, [0, 1]) ==> 6
Args:
input_tensor: The tensor to reduce. Should have numeric type.reduction_indices: The dimensions to reduce. IfNone(the default), reduces all dimensions.keep_dims: If true, retains reduced dimensions with length 1.name: A name for the operation (optional).
Returns:
The reduced tensor.
点评:这个API主要是降维使用,在这个例子中,将测试图片和所有图片相加后的二维矩阵,降为每个图片只有一个最终结果的一维矩阵。
http://blog.csdn.net/snsn1984/article/details/51482787
TensorFlow博客翻译——用TensorFlow在云端进行机器学习的更多相关文章
- CSDN博客积分规则
1.博客积分规则 博客积分是CSDN对用户努力的认可和奖励,也是衡量博客水平的重要标准.博客等级也将由博客积分唯一决定.积分规则具体如下: 每发布一篇原创或者翻译文章:可获得10分: 每发布一篇转载文 ...
- paper 92:图像视觉博客资源2之MIT斯坦福CMU
收录的图像视觉(也包含机器学习等)领域的博客资源的第二部分,包含:美国MIT.斯坦福.CMU三所高校 1)这些名人大家一般都熟悉,本文仅收录了包含较多资料的个人博客,并且有不少更新,还有些名人由于分享 ...
- (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU
首页 视界智尚 算法技术 每日技术 来打我呀 注册 OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...
- TensorFlow相关博客
Tensor官方教程 极客学院TensorFlow中文文档 xf__mao的博客
- 13 Tensorflow机制(翻译)
代码: tensorflow/examples/tutorials/mnist/ 本文的目的是来展示如何使用Tensorflow训练和评估手写数字识别问题.本文的观众是那些对使用Tensorflow进 ...
- 原创翻译-值得关注的10个python语言博客
原文链接 原文链接的网页感觉网络不是很好,不容易上.我在这里就给大家做个翻译吧. 大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建 ...
- Redisql: the lightning fast data polyglot【翻译】 - Linvo's blog - 博客频道 - CSDN.NET
Redisql: the lightning fast data polyglot[翻译] - Linvo's blog - 博客频道 - CSDN.NET Redisql: the lightnin ...
- 精通 TensorFlow 1.x·翻译完成
原文:Mastering TensorFlow 1.x 协议:CC BY-NC-SA 4.0 不要担心自己的形象,只关心如何实现目标.--<原则>,生活原则 2.3.c 在线阅读 Apac ...
- [翻译] TensorFlow 分布式之论文篇 "TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed Systems"
[翻译] TensorFlow 分布式之论文篇 "TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed ...
随机推荐
- Codevs 3556 科技庄园==洛谷 P2760
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Life是codevs的用户,他是一个道德极高的用户,他积极贯彻党的十八大精神, ...
- solr相关文章
Solr集群架构概述及delta-import详细配置 背景 由于项目原因,重新熟悉了下Solr,版本为3.6,搭建了主从Solr服务,并使用DIH从RDBMS数据源增量更新索引. 其实也没什么技术含 ...
- POJ 1741 Tree【树分治】
第一次接触树分治,看了论文又照挑战上抄的代码,也就理解到这个层次了.. 以后做题中再慢慢体会学习. 题目链接: http://poj.org/problem?id=1741 题意: 给定树和树边的权重 ...
- POJ 2348 Euclid's Game【博弈】
题目链接: http://poj.org/problem?id=2348 题意: 给定两个数,两个人每次从较大数中减去较小数的倍数,谁先得到0谁获胜,为谁赢? 分析: 令一种可能出现的整数对为(a,b ...
- Office EXCEL 中单元格怎么打斜线
右击单元格,然后设置单元格格式,然后添加需要的边框 注意里面的文字有讲究,比如我要右上角显示Value,左下角显示Payload,则需要先输一堆空格,然后输入Value,把Value挤到右边去 ...
- 每天一个JavaScript实例-获取元素当前高度
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- PHPCMS中GET标签概述、 get 标签语法、get 标签创建工具、get 调用本系统演示样例、get 调用其它系统演示样例
一.get 标签概述 通俗来讲,get 标签是Phpcms定义的能直接调用数据库里面内容的简单化.友好化代码,她可调用本系统和外部数据,仅仅有你对SQL有一定的了解,她就是你的绝世好剑!也就是适合熟悉 ...
- Spark应用远程调试
本来想用Eclipse的.然而在网上找了一圈,发现大家都在说IntelliJ怎样怎样好.我也受到了鼓励,遂决定在这台破机器上鼓捣一次IntelliJ吧. Spark程序远程调试,就是将本地IDE连接到 ...
- SLF4J: Failed to load class的问题及解决
今天在做接口测试,一运行测试程序,就跳出这样一个大大的错误: SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”. SLF4 ...
- 【转载】How browsers work--Behind the scenes of modern web browsers (前端必读)
浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工 作原理,我们将看到,从你在地址栏输入google.com到你看到google主页过程中都发生了什么. 将讨论的浏览器 今天,有五种主流浏览器- ...