1. 程式人生 > >tensorflow——入門程式碼一(minist master)

tensorflow——入門程式碼一(minist master)

一 檔案結構

    並不是自己下載的程式碼,老師給的,看到readme.md猜測可能時github上下載的。先理一下這個檔案結構,最_pycache_檔案有什麼用(https://blog.csdn.net/index20001/article/details/73501375/ ),解決了自己一半的疑惑,作用類似於他的名字cache,減少工程執行時間。但是,他的產生情況和文中不符,此處不再細究。

    字尾.py的肯定一目瞭然,根據檔名猜測是不同演算法的實現。下面那些莫名其妙的字尾名,參考:https://zhidao.baidu.com/question/487001230.html,就是一個老外標記好的minist資料。(很好奇為什麼這麼少)

二 邊學tensorflow邊看程式碼

(1)瞭解一下 tensorflow

https://blog.csdn.net/lhh08hasee/article/details/80546919(csdn,深度學習學習資源的部落格)

(2)上面視訊收費......所以

主要想系統看下tensorflow,看官網教程感覺會很慢,看個視訊入門先(個人感覺,看了一些機器學習基礎知識的教程,發現還是先會用,再回過頭來看基礎比較好,因為基礎是在太多了,看前面,忘後面)

三 視訊筆記()

(1)tensorflow簡介

a.  作者:google  作用:方便入門深度學習

b. 安裝 windows/ubuntu+cpu+python3.5上的tensorflow

c.第三小節:(機器學習基礎)......(已知道)

  (2)tensorflow基礎框架

a.  怎樣處理資料的結構(通過tensorboard介紹的)

收穫:tensorflow,翻譯過來:向量在結構中飛。(建議視訊多看兩遍,接受它需要有基礎)

b. 程式碼看結構

import tensorflow as tf
import numpy as np

#creat data
x_data = np.random.rand(100).astype(np.float32) #資料轉換,依據 
#tensorflow資料格式
#實際y_data,用來預測模型好壞
y_data = x_data*0.1+0.3

#print(x_data)

#creat tensorflow structure start#

#Weigtht 矩陣,大寫方便識別
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))
biases = tf.Variable(tf.zeros([1]))

y = Weights*x_data+biases    #很明顯和上述式子結構一樣
loss = tf.reduce_mean(tf.square(y-y_data))  #計算誤差平方和

optimizer = tf.train.GradientDescentOptimizer(0.5)  #梯度下降最優控制器 
#(百度翻譯),0.5為學習效率,等效於步長

train = optimizer.minimize(loss)  #用梯度下降使誤差最小

init = tf.initialize_all_variables()  #上面僅僅是建立,這裡初始化變數

#...............end.............#

sess = tf.Session()
sess.run(init)  #Very important

#訓練神經網路

for step in range(201):
    sess.run(train)
    if step %20 ==0:
        print(step,sess.run(Weights),sess.run(biases))

執行結果:

注意:本程式碼為視訊練習手打程式碼,由於md2all用的不太熟,所以可能執行會存在錯誤,錯誤原因一定是來手動排版產生了不必要空格。 

小結:第一次打tensorflow程式碼,感覺到了當初聽公開課老師說的感受,人工智慧理論是一回事,寫程式碼是另一回事兒,但是走的遠的理論一定要好。程式碼理解很容易,邏輯理清楚有點難,我不太清楚sess.run()的工作意味著什麼,其他都是很基礎的東西。

c.會話控制

看了個部落格,知道複製程式碼進去md2all產生錯誤的原因不是我自己的操作原因,看了一眼感覺稍微麻煩點,還不如直接截圖來的爽快。程式碼很簡單,很好理解。

d.變數

結果:

也很簡單,注意標註first和second的地方就好了。

本想簡單瞭解,突然間感覺也挺多的,看完視訊再去研究下tesorflow的hello world程式碼。