tensorflow与numpy均提供了强大的矩阵运算功能,很多矩阵的运算函数功能是重复的。
那什么时候选择用tensorflow,什么时候选择用numpy呢?
这个的选择需正确的理解tensorflow与numpy计算过程的区别。
tensorflow的计算一般可分成两个阶段:
- 第一阶段,定义所有的计算过程,即计算流图。在这个阶段,所有的变量均无实际参数值,仅仅表示一个计算过程;
- 第二阶段,执行运算,创建会话(Session),此时才会对变量进行赋值;
而numpy的计算,会直接对具体的参数值进行运算。
因此,在tensoflow的第一阶段,表示计算过程时,必段选用tensorflow的函数;而在第二阶段,或者对已有具体参数值进行运算时,则需选择numpy。
具体可参考示意如下(以reshape函数为例):
import tensorflow as tf
import numpy as np
#矩阵a已经具有实际参数值,需选用numpy的reshape函数
a = [[3.0,2.0,1.0],[3.0,4.0,5.0],[7.0,8.0,9.0]]
b = np.reshape(a,[9])
#矩阵c是张量,在执行sess.run()无实际参数值,需选用tensorflow的reshape函数
c = tf.get_variable('c',[3,3],tf.float32,initializer=tf.truncated_normal_initializer(stddev=0.