TensorFlow學習筆記01-常見函數和雜七雜八的筆記

寫在前面的話:
TF的結構在開始階段還是比較難受的。它和之前學的所有語言都不一樣。傳統語言都是順序運行,TF採用tensor的方式工作,因此在定義完之後,在沒調用run之前。只是有一堆定義,也就是計算圖。這裏記錄下遇到的常用函數,不限於TF

函數 TF/Py

  • np.random.randint()
    Numpy的隨機函數,雖然不在TF,但是一樣用到。
  • placeholder() / Variable()
    有點像Java裏面StringBuffer和String之間的區別。一個是佔位,在計算圖例事先挖好的蘿蔔坑。一個是實實在在的變量。
  • tf.reduce_sum()
    reduce_sum 是 tensor 內部求和的工具。
  • tf.reduce_mean()
    tf.reduce_mean是將tensor內部求均值的工具
  • tf.reshape(tensor, shape, name=None)
    類似OpenCV的reshape
  • tf.argmin(input, dimension, name=None)/ argmax()
    沿需要的維度找最小(大)值的索引值,最小由0開始(圖片來自51cto摘抄)
    argmax_0argmax_1
  • .eval()
    打印變量
  • tf.rank(arr) / tf.shape()
    輸出矩陣維度 / 打印矩陣呢的行和列:tf.shape(要打印的矩陣).eval()
  • tf.cast(*, type)
    數據類型轉換
  • mnist.train.next_batch()
    MNIST數據集返回一個batch的數據的接口。有點像迭代器。
  • Python中append和extend的區別
    使用append的時候,是將new_media看作一個對象,整體打包添加到music_media對象中
    list.append(object) 向列表中添加一個對象object
    append像數據結構的廣義表
    list.extend(sequence) 把一個序列seq的內容添加到列表中
    extend像merge
  • strip() 剔除字符串首尾無效字符。

開始看的時候總感覺腦瓜懵懵的,應該是突然來一堆不熟悉的邏輯讓人手足無措,寫到這裏突然反應過來,這不是和之前OpenCV裏面/Android/Java裏面的那些接口一樣用嗎。。直接查文檔上就完了…開始接受不了的原因是這些傳進去的參數都不是參數而是tensor,在計算過程中也都是操作tensor,其他都是一樣的。


  • tf.namescope(‘namescope’)
    和C++ 的namespace差不多。在tensorboard裏面,同一個namescope是一個整體

  • add_to_collection就是把變量添加到對應key下的list中

  • exponential_decay指數衰減學習率,

  • def exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None):
    decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps)

  • tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY, global_step)
    滑動平均模型,它可以使得模型在測試數據上更健壯,在使用隨機梯度下降算法訓練神經網絡時,通過滑動平均模型可以在很多的應用中在一定程度上提高最終模型在測試數據上的表現。其實滑動平均模型,主要是通過控制衰減率來控制參數更新前後之間的差距,從而達到減緩參數的變化值.滑動平均

  • control_dependencies(control_inputs)返回一個控制依賴的上下文管理器,指定某些操作執行的依賴關係。在執行某些op,tensor之前,某些op,tensor得首先被運行。博客1博客2

查看幫助文檔

目前沒有找到能像vs一樣好用的直接go to definition的IDE所以,有一種辦法可以即使查閱文檔:
print(help(tf.***))能夠像MATLAB一樣help出來文檔註釋。
spyder有些可以轉到定義,有些不可以。多試試,畢竟沒有系統學Python就上了還是比較吃虧

Console忽略警告

import warnings
warnings.filterwarnings(“ignore”) # 關閉警告

saver = tf.train.Saver(max_to_keep)
保存模型的操作,設置存儲模型的數量。
如果跑一遍epoch就存一次模型顯然再大的硬盤都承受不住而且。保存早些時間的模型多數情況是沒有意義的,這裏可以指定保存的模型數量。保存新的,舊的就被刪除。默認情況下。TF只保存5個

TF-Saver的文檔

遇到的問題

TypeError: main() takes no arguments (1 given)

注意這裏
tf.app.run() 會調用main,但是會傳進去一個參數,所以要在main()設置一個接收。如果不想這麼做,就不要用tf.app.run(),而是直接用main()如圖。這兩個用法的差異可以參考:這篇博文

pip install 速度慢怎麼辦

pip從國外鏡像安裝包比較慢可以通過換成國內鏡像源的方式解決。可以採用直接修改配置文件的方式解決。我比較喜歡採用pip install時候加指定url的方式。:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider,這樣就會從清華這邊的鏡像去安裝pyspider庫

國內源:
清華:https://pypi.tuna.tsinghua.edu.cn/simple
阿里雲:http://mirrors.aliyun.com/pypi/simple/
中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/
華中理工大學:http://pypi.hustunique.com/
山東理工大學:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/

換源後速度

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章