TF Boys (TensorFlow Boys ) 養成記(一):TensorFlow 基本操作


本資料是在Ubuntu14.0.4版本下進行,用來進行圖像處理,所以只介紹關於圖像處理部分的內容,並且默認TensorFlow已經配置好,如果沒有配置好,請參考官方文檔配置安裝,推薦用pip安裝。關於配置TensorFlow,官方已經說得很詳細了,我這里就不啰嗦了。官方教程看這里:

如果安裝了GPU版本的TensorFlow,還需要配置Cuda,關於Cuda安裝看這里:

我們還需要一個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))

如果遇到任何報錯,請參考:

使用TensorFlow之前,要了解一下TensorFlow的基本知識:

1. 使用圖(graphs)來表示計算;

2.在會話(Session)中執行圖;

3.使用張量(tensors)來代表數據;

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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM