簡體   English   中英

如何在不轉換為 Numpy 數組的情況下將 TensorFlow 張量轉換為 PyTorch 張量?

[英]How to convert TensorFlow tensor to PyTorch tensor without converting to Numpy array?

I want to use a pre-trained Pytorch model in Tensorflow and I need to convert the tensorflow tensors to pytorch tensors. 但我不想將 pytorch 張量轉換為 numpy 數組並將其轉換為 tensorflow 張量,因為我收到“占位符張量”的錯誤。 我在制作圖表時需要這種轉換,所以 tensorflow 張量沒有值並且不能轉換為 numpy? 有什么解決辦法嗎?

您對 Tensorflow 張量執行的操作會被“記住”,以便計算和反向傳播梯度。 PyTorch 張量也是如此。 所有這些最終都是在兩個框架中訓練 model 所必需的。 這也是你不能在兩個框架之間轉換張量的原因:它們有不同的操作和梯度計算系統。 他們無法捕獲超出其框架的任何操作。 例如,您不能(截至 2021 年 1 月)在自定義損失函數中使用 python 循環。 它必須被實施到框架中才能工作。 同樣,沒有將 pytorch 操作轉換為 Tensorflow 操作的實現。

這個答案顯示了當您的張量定義明確(不是占位符)時它是如何完成的。 但是目前沒有辦法將梯度從 Tensorflow 傳播到 PyTorch 或反之亦然。 也許將來會對這兩個框架進行某種大規模更新,使它們可以互操作,但我對此表示懷疑。 最好分別使用它們。

所以,簡而言之,你不能在兩個框架之間轉換占位符張量。 您必須堅持使用其中一個庫或使用具體張量 + numpy 調解器在框架之間進行通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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