我是TensorFlow的新手,在閱讀數據的過程中遇到了一些問題。我在mnist數據上設置了一個TensorFlow圖表,但我想修改它,以便我可以運行一個程序來訓練它+保存模型,然後運行另一個程序來加載所述圖形,進行預測並計算測試精度。將單個示例提供給在文件上訓練的TensorFlow圖形?
如果我感到困惑的是如何繞過訓練圖中的原始I/O系統,並「注入」一個圖像來預測測試數據的元組(圖像,標籤)以進行精度測試。要閱讀訓練數據,我正在使用此代碼:
_, input_data = util.read_examples(
paths_to_files,
batch_size,
shuffle=shuffle,
num_epochs=None)
feature_map = {
'label': tf.FixedLenFeature(
shape=[], dtype=tf.int64, default_value=[-1]),
'image': tf.FixedLenFeature(
shape=[NUM_PIXELS * NUM_PIXELS], dtype=tf.int64),
}
example = tf.parse_example(input_data, features=feature_map)
然後我將示例饋送到卷積層等,並生成輸出。
現在想象一下,我用指定輸入的代碼來訓練我的圖形,保存圖形和權重,然後在另一個腳本中恢復圖形和權重以進行預測 - 我想拍攝(比如)10張圖像並將它們饋送到圖表以生成預測。我如何「注入」這10幅圖像,以便預測從另一端出來?
我玩過飼料字典和佔位符,但我不確定它們對我來說是否是正確的東西......似乎他們依靠內存中的數據,而不是從數據庫中讀取數據例如測試數據的隊列。
謝謝!
好酷,這是有道理的。我在加載我的圖表時遇到了麻煩,這是如何工作的 - 原始的util.read_examples節點位於該圖表的某個位置,我不得不以某種方式繞過或修改它。是最簡單的事情只是重新排列我的圖表,刪除它並添加一個新的飼養節點? – user358829
Ahh--通常會爲推理和訓練構建稍微不同的圖形,但我認爲最簡單的解決方案是使用相同的圖形,但在推理時提供Feed詞典。您可以將想要替換的張量作爲字典中的關鍵字,並將該張量所需的值作爲值傳遞。我想在你的例子中你可以使用'sess.run([your_inference_tensors],{example ['image']:your_image_data})'。爲了更加清晰,請檢查[Session.run()](https://www.tensorflow.org/versions/r0.11/api_docs/python/client.html#Session.run)文檔。 –