【Tensorflow】輔助工具篇——tensorflow slim(TF-Slim)介紹
這樣我們就可以使用slim了,既然說到了,先來扒一扒tensorflow.contrib這個庫,tensorflow官方對它的描述是:此目錄中的任何程式碼未經官方支援,可能會隨時更改或刪除。每個目錄下都有指定的所有者。它旨在包含額外功能和貢獻,最終會合併到核心TensorFlow中,但其介面可能仍然會發生變化,或者需要進行一些測試,看是否可以獲得更廣泛的接受。所以slim依然不屬於原生tensorflow。
那麼什麼是slim?slim到底有什麼用?
slim是一個使構建,訓練,評估神經網路變得簡單的庫。它可以消除原生tensorflow裡面很多重複的模板性的程式碼,讓程式碼更緊湊,更具備可讀性。另外slim提供了很多計算機視覺方面的著名模型(VGG, AlexNet等),我們不僅可以直接使用,甚至能以各種方式進行擴充套件。
slim的子模組及功能介紹:
arg_scope: provides a new scope named arg_scope that allows a user to define default arguments for specific operations within that scope.
除了基本的namescope,variabelscope外,又加了argscope,它是用來控制每一層的預設超引數的。(後面會詳細說)
data: contains TF-slim's dataset definition, data providers, parallel_reader, and decoding utilities.
貌似slim裡面還有一套自己的資料定義,這個跳過,我們用的不多。
evaluation: contains routines for evaluating models.
評估模型的一些方法,用的也不多
layers: contains high level layers for building models using tensorflow.
這個比較重要,slim的核心和精髓,一些複雜層的定義
learning: contains routines for training models.
一些訓練規則
losses: contains commonly used loss functions.
一些loss
metrics: contains popular evaluation metrics.
評估模型的度量標準
nets: contains popular network definitions such as VGG and AlexNet models.
包含一些經典網路,VGG等,用的也比較多
queues: provides a context manager for easily and safely starting and closing QueueRunners.
文字佇列管理,比較有用。
regularizers: contains weight regularizers.
包含一些正則規則
variables: provides convenience wrappers for variable creation and manipulation.
這個比較有用,我很喜歡slim管理變數的機制
具體子庫就這麼多拉,接下來乾貨時間!二.slim定義模型
slim中定義一個變數的示例:
?12345678910111213 | # Model Variables weights = slim.model_variable( 'weights' , shape=[ 10 , 10 , 3 , 3 ], initializer=tf.truncated_normal_initializer(stddev= 0.1 ), regularizer=slim.l2_regularizer( 0.05 ), device= '/CPU:0' ) model_variables = slim.get_model_variables() # Regular variables
|