問題
Image
和
Label
資料成對寫入
TFRecord
檔案,按理訓練過程中讀取的
Image
和
Label
也應該是一一對應的,但有的時候發現
Image
和
Label
并不能比對。如:
将以下資料寫入
TFrecord
中:
Image 1 —— Label 1
Image 2 —— Label 2
Image 3 —— Label 3
讀取TFRecord時,資料發生錯位:
Image 1 —— Label 2
Image 2 —— Label 3
Image 3 —— Label 1
原因
以上不比對情形産生的原因之一是在讀取
TFRecord
時,擷取
Image
和
Label
的節點計算了兩次,而每一次新的讀取資料節點計算過程都會讀取下一組資料,也就是說兩次讀取資料的計算過程讓
Image
和
Label
發生了錯位,使得一張圖檔與下一張圖檔的
Label
對應了起來。
image = sess.run([image_features])
label = sess.run([label_features])
解決
想要讓
Image
和
Label
一一對應,隻要使用同一個計算節點得到
Image
和
Label
資料,換言之,隻
run
一次:
此時你會發現,新得到的圖檔和Label一一對應了:
Image 1 —— Label 1
Image 2 —— Label 2
Image 3 —— Label 3