最近用了一点pytorch,想着稍稍理一下,这样一个和TensorFlow抗衡的一个框架,究竟是何方神圣?
首先我们要搞清楚pytorch和TensorFlow的一点区别,那就是pytorch是一个动态的框架,而TensorFlow是一个静态的框架。何为静态的框架呢?我们知道,TensorFlow的尿性是,我们需要先构建一个TensorFlow的计算图,构建好了之后,这样一个计算图是不能够变的了,然后我们再传入不同的数据进去,进行计算。这就带来一个问题,就是固定了计算的流程,势必带来了不灵活性,如果我们要改变计算的逻辑,或者随着时间变化的计算逻辑,这样的动态计算TensorFlow是实现不了的,或者是很麻烦。
但是pytorch就是一个动态的框架,这就和python的逻辑是一样的,要对变量做任何操作都是灵活的。
举个简单的例子,当我们要实现一个这样的计算图时:
用TensorFlow是这样的:
而用pytorch是