1. 程式人生 > >機器學習雜記,主要記錄學習過程中的一些疑問和理解

機器學習雜記,主要記錄學習過程中的一些疑問和理解

一、

最近看tensorflow,試著寫 cnn 程式碼,其中的一個介面 :

def conv2d(input, filter, strides, padding, use_cudnn_on_gpu=True, data_format="NHWC", dilations=[1, 1, 1, 1], name=None)

其中 filter 這個 tensor  [filter_height, filter_width, in_channels, out_channels] 對應的意思就是[卷積核的高度,卷積核的寬度,影象通道數,卷積核個數] 剛開始一直糾結的就是第四維哈

二、

對於tf.Session().run([], feed_dict)理解,函式原型:

run(fetches, feed_dict=None, options=None, run_metadata=None)

之前一直糾結這個 run 到底是怎麼運作的,現在搞明白一些哈,記錄下:

第一個引數fetches 主要是 tensors,對於 text-cnn 示例程式碼裡面,fetches=tf.train.AdamOptimizer(learning_rate).minimize(self.loss)哈,其實就是你期望幹什麼或者計算哪個值,放到 text-cnn 訓練模型,再訓練期間我當時時期望一直優化引數optim 了,ok,既然要優化引數 optim,那麼他是怎麼得到的呢?通過 self.loss 得到的。進一步,self.loss時通過訓練資料和對應標籤計算得到的,因此我們就知道 feed_dict 需要哪些引數了,就是[input_x, input_y]。也就是說 feed_dict 傳哪些引數需要根據 fetches來定。

之前在網上 down 了一個 text_cnn 程式碼,訓練了一下結果不錯,但是怎麼把他應用到線上呢,或者怎麼用於生產呢?然後找到了TensorFlow Serving這貨,搞了一天終於送上線了, 其中需要設定saved,涉及tf.saved_model.signature_def_utils.build_signature_def(inputs,outputs,method_name),才對run 有了進一步瞭解。可以看一下這個黑哥們的解釋哈,https://stackoverflow.com/questions/51401935/arguments-to-tensorflow-session-run-do-you-pass-operations