我已经写在PyTorch一个神经网络,输出GPU的一些张量a
。我想继续处理a
了高效TensorFlow层。
据我知道,要做到这一点的唯一方法是从a
GPU内存转移到CPU内存,转换为numpy的,然后反馈到这TensorFlow。一个简单的例子:
import torch
import tensorflow as tf
# output of some neural network written in PyTorch
a = torch.ones((10, 10), dtype=torch.float32).cuda()
# move to CPU / pinned memory
c = a.to('cpu', non_blocking=True)
# setup TensorFlow stuff (only needs to happen once)
sess = tf.Session()
c_ph = tf.placeholder(tf.float32, shape=c.shape)
c_mean = tf.reduce_mean(c_ph)
# run TensorFlow
print(sess.run(c_mean, feed_dict={c_ph: c.numpy()}))
这是一个有点牵强,但也许是有办法让这个无论是
a
从未离开GPU内存,或a
从GPU内存去固定内存到GPU内存。我试图在2上面的代码段使用non_blocking=True
但我不知道它做什么,我希望(即其移动到固定的内存)。
理想情况下,我TensorFlow图会由PyTorch张量所占用的内存直接操作,但我认为那是不可能的?