儘管這裏有很多問題提出了重複使用經過訓練的tensorflow模型的問題,但使用最主流的模型Inception-v3罰款仍然是一個挑戰調整自定義數據集以僅預測某個單一圖像的概率。使用微調的Inception-v3模型來預測單個圖像
在對這個話題做了一些研究之後(最相似的SO-thread肯定是Tensorflow: restoring a graph and model then running evaluation on a single image)我可以得出結論,有一些訓練有素的模型的凍結graph.pb文件就像有一個聖盃,因爲你沒有需要重建圖形,選擇要恢復的張量或其他 - 只需撥打tf.import_graph_def
並通過sess.graph.get_tensor_by_name
獲取所需的輸出圖層。
但問題是,配備tensorflow(如classify_image.py),這樣的«凍結圖»例子的有精心準備的輸入和輸出點像DecodeJpeg/contents:0
和softmax:0
分別在那裏你可以養活你的自定義圖像,並檢索答案來自於,而您在使用自定義微調模型時沒有這樣好的切入點。
例如,微調啓-V3模型冷凍圖表將收到實際卷積層張量的FIFOQueue
,QueueDequeueMany
和類似的打讀取來自TFRecord的與輸出張量將看起來像tower_0/logits/predictions
與不可用的形狀含有批量大小批次,所以你只是沒有適當的點來提供一個新的JPEG圖像,並得到預測。
是否有任何成功的故事報道這種批量饋送的微調模型與新圖像的使用?或者,也許有關於將TFRecord/batch節點的輸入包更改爲JPEG的想法?
P.S.還有一種替代方式可以運行預訓練模型,比如TF Serving,但是建立一個巨大的github回購庫,每個其他步驟都有大量的依賴關係,這對我來說似乎壓倒一切。
您需要加載專門構建的推理圖,而不是訓練圖。 Slim,tf.contrib.learn.Estimator,keras和其他框架都允許您構建一個很好的推理圖。 –