TF Boys (TensorFlow Boys ) 养成记(一)
本资料是在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 ) 养成记(一)的更多相关文章
- TF Boys (TensorFlow Boys ) 养成记(一):TensorFlow 基本操作
本资料是在Ubuntu14.0.4版本下进行,用来进行图像处理,所以只介绍关于图像处理部分的内容,并且默认TensorFlow已经配置好,如果没有配置好,请参考官方文档配置安装,推荐用pip安装.关于 ...
- TF Boys (TensorFlow Boys ) 养成记(六)
圣诞节玩的有点嗨,差点忘记更新.祝大家昨天圣诞节快乐,再过几天元旦节快乐. 来继续学习,在/home/your_name/TensorFlow/cifar10/ 下新建文件夹cifar10_train ...
- TF Boys (TensorFlow Boys ) 养成记(五)
有了数据,有了网络结构,下面我们就来写 cifar10 的代码. 首先处理输入,在 /home/your_name/TensorFlow/cifar10/ 下建立 cifar10_input.py,输 ...
- TF Boys (TensorFlow Boys ) 养成记(四)
前面基本上把 TensorFlow 的在图像处理上的基础知识介绍完了,下面我们就用 TensorFlow 来搭建一个分类 cifar10 的神经网络. 首先准备数据: cifar10 的数据集共有 6 ...
- TF Boys (TensorFlow Boys ) 养成记(三)
上次说到了 TensorFlow 从文件读取数据,这次我们来谈一谈变量共享的问题. 为什么要共享变量?我举个简单的例子:例如,当我们研究生成对抗网络GAN的时候,判别器的任务是,如果接收到的是生成器生 ...
- TF Boys (TensorFlow Boys ) 养成记(二)
TensorFlow 的 How-Tos,讲解了这么几点: 1. 变量:创建,初始化,保存,加载,共享: 2. TensorFlow 的可视化学习,(r0.12版本后,加入了Embedding Vis ...
- TF Boys (TensorFlow Boys ) 养成记(二): TensorFlow 数据读取
TensorFlow 的 How-Tos,讲解了这么几点: 1. 变量:创建,初始化,保存,加载,共享: 2. TensorFlow 的可视化学习,(r0.12版本后,加入了Embedding Vis ...
- TF Boys (TensorFlow Boys ) 养成记(六): CIFAR10 Train 和 TensorBoard 简介
圣诞节玩的有点嗨,差点忘记更新.祝大家昨天圣诞节快乐,再过几天元旦节快乐. 来继续学习,在/home/your_name/TensorFlow/cifar10/ 下新建文件夹cifar10_train ...
- TF Boys (TensorFlow Boys ) 养成记(三): TensorFlow 变量共享
上次说到了 TensorFlow 从文件读取数据,这次我们来谈一谈变量共享的问题. 为什么要共享变量?我举个简单的例子:例如,当我们研究生成对抗网络GAN的时候,判别器的任务是,如果接收到的是生成器生 ...
随机推荐
- eclipse4.x 启动之后, "Initializing Java Tooling" 卡住问题解决
eclipse4.x 启动之后, "Initializing Java Tooling(1%)",其他操作均被阻塞,导致无法正常工作, 解决方案: 删除当前工作目录下的worksp ...
- JSP页面数据展示:分组数据展示
一.描述: 页面上要展示的数据只要写好sql从数据库查出来即可,但是展示有时候不是太好处理.比如工作中遇到的这种情况:有一个问题处理的流程,其中需要选择下一处理人,这些处理人要以部门的形式分组展示,实 ...
- flash项目优化总结
swc中的类如果没有在项目中没有被申明,在编译时就不会被编译进swf中,这样一些swc中的类和资源类如果不用了,只要不被声明就不会占用swf大小了.
- jsp学习--JavaBean定义和在Jsp中使用JavaBean
一.JavaBean 1.什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点:>>这个Java类必须具有一个无参的构造函数>>属性必须私 ...
- Navicat for Oracle 连接oracle 配置
oci.dll 替换为对应oracle版本的oci.dll
- Sql Server 查询第30条数据到第40条记录数
1.select top 10 * from (select top 40 * from tablename order by id desc);
- ARM Linux 3.x的设备树(Device Tree)
http://blog.csdn.net/21cnbao/article/details/8457546 宋宝华 Barry Song <21cnbao@gmail.com> 1. ...
- linux开启oracle服务
linux下启动oracle su - oracle sqlplus /nolog conn /as sysdba startup exit lsnrctl start exit 2. linux下关 ...
- hadoop 集群部署ganglia 监控服务与nagios 报警服务
1. 部署ganglia 服务 ganglia 涉及到的组件: 数据监测节点(gmond):这个部件装在需要监测的节点上,用于收集本节点的运行情况,并将这些统计信息传送到gmetad, ...
- ArcGIS Engine代码共享-工作空间(workspace)对象操作
代码: public class WorkspaceHelper { public static string GISConnectionString; public static IWorkspac ...