https://zhuanlan.zhihu.com/p/28636490
图创建和调试
赢家:PyTorch
创建和运行计算图可能是两个框架最不同的地方。在PyTorch中,图结构是动态的,这意味着图在运行时构建。而在TensorFlow中,图结构是静态的,这意味着图先被“编译”然后再运行。
举一个简单的例子,在PyTorch中你可以用标准的Python语法编写一个for循环结构
for _ in range(T):
h = torch.matmul(W, h) + b
此处T可以在每次执行代码时改变。而TensorFlow中,这需要使用“控制流操作”来构建图,例如tf.while_loop。TensorFlow确实提供了dynamic_rnn用于常见结构,但是创建自定义动态计算真的更加困难。
PyTorch中简单的图结构更容易理解,更重要的是,还更容易调试。调试PyTorch代码就像调试Python代码一样。你可以使用pdb并在任何地方设置断点。调试TensorFlow代码可不容易。要么得从会话请求要检查的变量,要么学会使用TensorFlow的调试器(tfdbg)。
灵活性
tensorflow:静态计算图,数据参数在CPU与GPU之间迁移麻烦,调试麻