繁体   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