TF Boys (TensorFlow Boys ) 养成记(一):TensorFlow 基本操做

本资料是在Ubuntu14.0.4版本下进行,用来进行图像处理,因此只介绍关于图像处理部分的内容,而且默认TensorFlow已经配置好,若是没有配置好,请参考官方文档配置安装,推荐用pip安装。关于配置TensorFlow,官方已经说得很详细了,我这里就不啰嗦了。官方教程看这里:python

若是安装了GPU版本的TensorFlow,还须要配置Cuda,关于Cuda安装看这里:linux

咱们还须要一个Python编译器,这里咱们使用Anaconda,Anaconda2对应Python2,Anaconda3对应Python3,我使用Anaconda2。Anaconda自带了一些经常使用的Python包,以及一些比较好用的Python编译器。git

配置好TensorFlow之后,打开Anaconda的Spyder,输入如下代码检查TensorFlow是否可用。github

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))

若是遇到任何报错,请参考:小程序

使用TensorFlow以前,要了解一下TensorFlow的基本知识:api

1. 使用图(graphs)来表示计算;网络

2.在会话(Session)中执行图;dom

3.使用张量(tensors)来表明数据;python2.7

4.经过变量(variables)来维护状态;函数

5.使用供给(feeds)和取回(fetches)来传入或者传出数据。

关于详细的基础使用,请参考:, 太长不看的,至少看下代码以及代码的注释。

了解了这些基本用法之后,活动一下筋骨,来编个小程序测试一下咱们学习的结果吧,目标是优化一个一次函数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']='0' 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中有自带的代码来实现,官方文档也给出了很好的解释,这两个,建议都看,增强本身对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这里找相应的函数来看,,找不到的话,能够点右上角的搜索来搜索该函数。

 

先写到这里,明天更新TensorFlow的How To。

 

 

参考文献:

1.

相关文章
相关标签/搜索