我有一个pytorch模型和一个tensorflow模型,我想在一个GPU上训练它们,遵循以下过程:input --> pytorch model--> output_pytorch --> tensorflow model --> output_tensorflow --> pytorch model
。
可以这样做吗?如果回答是肯定的,我会遇到任何问题吗?
提前致谢。
答案 0 :(得分:0)
我没有这样做,但它有可能但实施可能有点。 您可以将每个网络视为一个功能,您希望 - 在某种意义上 - 组成这些功能以形成您的网络,为此您可以通过仅将一个网络的结果提供给另一个来计算最终功能然后使用链规则计算衍生物(使用两个包的符号区分)。
我认为实现这个的好方法可能是将TF模型包装为PyTorch Function
并使用tf.gradients
来计算反向传递。
做渐变更新真的很难(因为TF的计算图中存在一些变量)你可以将TF变量转换为PyTorch Variable
将它们变成TF计算图中的placeholde
s,将它们输入{{1}并使用PyTorch机制更新它们,但我认为这样做真的很难,相反,如果你在函数的后向方法中进行更新,你可能能够完成这项工作(它真的很难看但可能会完成这项工作)