[英]How to save a tensor to a file in TensorFlow using the low level (C) interface?
使用 TensorFlow 中的低級操作,我嘗試將張量(其實際值)保存到磁盤,但找不到方法。 如果數據是例如表示圖像的 UInt8 矩陣,那么我可以輕松地使用 EncodeJpeg 創建內容,然后使用 WriteFile 將生成的內容寫入具有給定名稱的文件。 同樣 EncodeWav 的工作方式相同。 另一方面,如果我只想保存一個帶有數字的矩陣,沒有“EncodeData”、“TensorToContent”或類似的操作將Tensor轉換為內容,可以用WriteFile保存什么。 我可以從我的 Graph 中獲取 Tensor 作為輸出,然后將其保存在 Graph 之外,但我的目的是在內部進行。
我花了一些時間,但最終找到了解決方案,盡管它可能不是最好的。 如果你能改進,歡迎你。
因此,我使用 Save/Restore 原始操作對。 一旦找到,它就相對簡單。
“保存”有兩個張量輸入,一個張量 InputList 和一個屬性。 第一個張量(標量字符串)必須給出文件名。 第二個張量(一維字符串)包含您要為文件中的張量指定的名稱(用於稍后的恢復目的)。 InputList 實際上是要保存的張量的集合。 Attribute 是要保存的張量的數據類型列表。
“恢復”也很簡單。 它有兩個張量輸入,一個張量輸出,一個類型屬性和一個可選的整數屬性。 如果可以查看更多文件,則第一個輸入(標量字符串)給出文件名或文件模式。 第二個輸入(標量字符串)給出了要在文件中查找的張量的名稱(見上文“保存”中)。 輸出是加載的張量本身。 type 屬性指定要加載的張量的類型。 如果與模式匹配的多個文件中存在具有相同名稱的張量,則可以使用可選的 Attribute,告訴哪個是首選的。
唯一需要注意的是“保存”中的 InputList。 在設計時將“保存”原始操作添加到圖形時,必須給出 Inputlist 中的輸入數量,以及類型列表參數中的(相同數量!)類型。 這意味着在運行時,當給出張量的實際名稱並將張量列表作為 InputList 時,您不能再更改張量的數量和數據類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.