簡體   English   中英

如何使用低級 (C) 接口將張量保存到 TensorFlow 中的文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM