TF Boys (TensorFlow Boys ) 养成记(一):TensorFlow 基本操作
本资料是在Ubuntu14.0.4版本下进行,用来进行图像处理,所以只介绍关于图像处理部分的内容,并且默认TensorFlow已经配置好,如果没有配置好,请参考官方文档配置安装,推荐用pip安装。关于配置TensorFlow,官方已经说得很详细了,我这里就不啰嗦了。官方教程看这里:https://www.tensorflow.org/get_started/os_setup
如果安装了GPU版本的TensorFlow,还需要配置Cuda,关于Cuda安装看这里:https://www.tensorflow.org/get_started/os_setup#optional-install-cuda-gpus-on-linux
我们还需要一个Python编译器,这里我们使用Anaconda,Anaconda2对应Python2,Anaconda3对应Python3,我使用Anaconda2。Anaconda自带了一些常用的Python包,以及一些比较好用的Python编译器。
配置好TensorFlow以后,打开Anaconda的Spyder,输入以下代码检查TensorFlow是否可用。
import tensorflow as tf
hello = tf.constant('Hello TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))
如果遇到任何报错,请参考:https://www.tensorflow.org/get_started/os_setup#common_problems
使用TensorFlow之前,要了解一下TensorFlow的基本知识:
1. 使用图(graphs)来表示计算;
2.在会话(Session)中执行图;
3.使用张量(tensors)来代表数据;
4.通过变量(variables)来维护状态;
5.使用供给(feeds)和取回(fetches)来传入或者传出数据。
关于详细的基础使用,请参考:https://www.tensorflow.org/get_started/basic_usage, 太长不看的,至少看下代码以及代码的注释。
了解了这些基本用法以后,活动一下筋骨,来编个小程序测试一下我们学习的结果吧,目标是优化一个一次函数y = wx + b的权值w和偏置b,使得w和b接近给定的表达式y = 0.1*x + b,代码如下:
import tensorflow as tf
import numpy as np
import os
os.environ['CUDA_VISIBLE_DEVICES']=''
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction=0.2
sess = tf.InteractiveSession(config=config) x_data = np.random.rand(100).astype("float32")
y_data = x_data * 0.1 + 0.3 W = tf.Variable(tf.random_uniform([1],-1.0,1.0))
b = tf.Variable(tf.zeros([1]))
y = W * x_data + b
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
init = tf.initialize_all_variables()
sess.run(init)
for step in xrange(201):
sess.run(train)
if step % 20 ==0:
print(step, sess.run(W), sess.run(b))
代码运行结果如下:

可以看到经过200次迭代,权重w已经接近预设值0.1,b 接近预设值0.3,实际上80次的时候已经收敛到很好的结果了。
接下来,我们进行下一步的工作,用神经网络来进行MNIST手写数字的识别,MNIST手写数字分 training 和 test 两个大类,training 有6万张28*28大小的手写数字,test有1万张28*28大小的数字,更具体的介绍看这里:MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges。
MNIST手写数字识别在TensorFlow的example中有自带的代码来实现,官方文档也给出了很好的解释,https://www.tensorflow.org/tutorials/mnist/beginners/和https://www.tensorflow.org/tutorials/mnist/pros/这两个,建议都看,加强自己对TensorFlow的理解。
至此,TensorFlow已经有了基本的入门知识,然鹅,还是不足以支撑我膨胀的野心,我是要成为加勒比海盗一样的男人,我是要成为TF Boys一样的男人(背景声音:噫~~),这种基本知识怎么能满足得了我这么优秀的头脑。
接下来,我们来看TensorFlow Mechanics 101,说实话,我也不知道这个名字是什么意思,反正是个教程,管他呢,先学会再说。这里面看起来也不难啊,就是介绍了examples/tutorials/mnist/mnist.py 和 examples/tutorials/mnist/fully_connected_feed.py两个函数,顺便说一下,用pip安装之后的TensorFlow目录一般在:/usr/local/lib/python2.7/dist-packages/tensorflow/或者是/usr/lib/python2.7/dist-packages/tensorflow/这里。细看这两个文件的代码,不是很难,如果前面的知识认真看了,这个可以直接看代码而不看官方文档,实在不明白的地方可以看官方文档的解释。
在看代码的过程中,有不明白的函数,就去Python API这里找相应的函数来看,https://www.tensorflow.org/api_docs/python/,找不到的话,可以点右上角的搜索来搜索该函数。
先写到这里,明天更新TensorFlow的How To。
参考文献:
1. https://www.tensorflow.org/tutorials/
TF Boys (TensorFlow Boys ) 养成记(一):TensorFlow 基本操作的更多相关文章
- TF Boys (TensorFlow Boys ) 养成记(一)
本资料是在Ubuntu14.0.4版本下进行,用来进行图像处理,所以只介绍关于图像处理部分的内容,并且默认TensorFlow已经配置好,如果没有配置好,请参考官方文档配置安装,推荐用pip安装.关于 ...
- TF Boys (TensorFlow Boys ) 养成记(五)
有了数据,有了网络结构,下面我们就来写 cifar10 的代码. 首先处理输入,在 /home/your_name/TensorFlow/cifar10/ 下建立 cifar10_input.py,输 ...
- TF Boys (TensorFlow Boys ) 养成记(五): CIFAR10 Model 和 TensorFlow 的四种交叉熵介绍
有了数据,有了网络结构,下面我们就来写 cifar10 的代码. 首先处理输入,在 /home/your_name/TensorFlow/cifar10/ 下建立 cifar10_input.py,输 ...
- TensorFlow.org教程笔记(一)Tensorflow初上手
本文同时也发布在自建博客地址. 本文翻译自www.tensorflow.org的英文教程. 本文档介绍了TensorFlow编程环境,并向您展示了如何使用Tensorflow解决鸢尾花分类问题. 先决 ...
- Tensorflow教程(1)Tensorflow的下载和安装
人工智能已经成为了目前的大趋势,作为程序员的我们也应该跟着时代进步.Tensorflow作为人工智能领域的重要工具,被广泛的使用在机器学习的应用当中. Tensorflow使用人数众多.社区完善,所以 ...
- [翻译] TensorFlow 分布式之论文篇 "TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed Systems"
[翻译] TensorFlow 分布式之论文篇 "TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed ...
- 学习tensorflow之mac上安装tensorflow
背景 听说谷歌的第二代机器学习的框架tensorflow开源了,我也心血来潮去探探大牛的产品.怎奈安装就折腾了一天,现在整理出来备忘. tensorflow官方网站给出的安装步骤很简单: # Only ...
- Tensorflow从入门到精通之——Tensorflow基本操作
前边的章节介绍了什么是Tensorflow,本节将带大家真正走进Tensorflow的世界,学习Tensorflow一些基本的操作及使用方法.同时也欢迎大家关注我们的网站和系列教程:http://ww ...
- 深度学习之 TensorFlow(二):TensorFlow 基础知识
1.TensorFlow 系统架构: 分为设备层和网络层.数据操作层.图计算层.API 层.应用层.其中设备层和网络层.数据操作层.图计算层是 TensorFlow 的核心层. 2.TensorFlo ...
随机推荐
- python list 列表
1. 什么是列表 列表是一个可变的数据类型 列表由[]来表示, 每一项元素使用逗号隔开. 列表什么都能装. 能装对象的对象. 列表可以装大量的数据 2. 列表的索引和切片 列表和字符串一样. 也有索引 ...
- java代码---indexOf()方法
总结:indexOf(String str,int index)方法.从参数指定位置开始,如果index值超过了字符串长度,则返回-1 package com.a.b; import java.io. ...
- Java-Runoob-面向对象:Java 多态
ylbtech-Java-Runoob-面向对象:Java 多态 1.返回顶部 1. Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操 ...
- NGUI的UIPanel、UIButton、AtlasMaker、Widget、Anchor、Tween、RectTransform
全文请看:http://note.youdao.com/noteshare?id=f7b476be35ec554e311bc13ef60b62ef
- node 中的定时器, nextTick()和setImmediate()的使用
1.node中使用定时器的问题在于,它并非精确的.譬如setTimeout()设定一个任务在10ms后执行,但是在9ms后,有一个任务占用了5ms,再次轮到定时器时,已经耽误了4ms. 好了node中 ...
- mongodb的安装(linux下)
1.去官网下载安装包 2.解压tar包 tar -zxvf filename 3.移动路径,并进入路径 mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongod ...
- Mysql总结(二)
数据库.表.字段.行 问:查询姓黄或洪的男生分析:数据从哪来,哪个表stu条件:姓黄或洪name or and 男生gender答:select * from stu where gender=1 a ...
- [转] C#2010 在TreeView控件下显示路径下所有文件和文件夹
原文 张丹-小桥流水,C#2010 在TreeView控件下显示路径下所有文件和文件夹 C#2010学习过程中有所收获,便总结下来,希望能给和我一样在学习遇到困难的同学提供参考. 本文主要介绍两个自定 ...
- 在线浏览office 文件
http://blog.csdn.net/binyao02123202/article/details/20051683 [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有 ...
- from 动态显示select数据
一. ModelChoiceField(ChoiceField) ... django.forms.models.ModelChoiceField ...