Bootstrap

NumPy与TensorFlow-tf.tensor异同点

NumPy数组与TenosrFlow中的张量(即tf.tensor)有很多相似地方,而且可以互相转换。下表总结了NumPy与tf.tensor的异同点。

NumPy与tf.tensor的异同点

操作类别NumPyTensorFlow 2+
数据类型np.ndarraytf.Tensor
np.float32tf.float32
np.float64tf.double
np.int64tf.int64
从已有数据构建np.array([3.2, 4.3], dtype=np.float16)a=tf.constant([3.2, 4.3], dtype=tf.float16)#常量 v=tf.Variable([3.2, 4.3], type=tf.float16)#变量
x.copy()tf.identity(x);tf.tile(a,(n,m))# 元组里的每个数值对应该轴复制次数
np.concatenatetf.concat((a,b),axis)# 待拼接的轴对应的维度数值可以不等,但其他维度形状需一致
线性代数np.dot #内积 np.multiply(*)#逐元素相乘或哈达玛积tf.matmul(x, y, name=None) 或(@)#内积tf.multiply(x, y, name=None),或(*)#逐元素相乘或哈达玛积
属性x.ndimx.ndim #查看rank
x.shapex.shape
x.sizetf.size(x)
改变形状x.reshapetf.reshape(x,(n,(-1)))#-1表示自动计算其他维度
np.transpose(x, [新的轴顺序] )tf.transpose(x, [新的轴顺序] )
x.flatten()tf.reshape(x,[-1]);tf.keras.layers.Flatten()
维度增减np.expand_dims(arr, axis)tf.expend_dims(a,axis)
np.squeeze(arr, axis)tf.squeeze(a,axis),#如果不声明axis,那么将压缩所有数值为1的维度。
类型转换np.floor(x)x=tf.cast(x,dtype=XX) x=x.numpy()=>np.array
比较np.lesstf.less(x,threshold)
np.less_equaltf.less_equal(x, threshold)
np.greater_equaltf.greater_equal(x, threshold)
随机种子np.random.seedtf.random.set_seed(n)

它们可以互相转换,具体分析如下:

  • 通过使用 np.array 或 tensor.numpy 方法,可以将TensorFlow张量转换为 NumPy 数组;
  • tf.convert_to_tensor把Python对象(NumPy,list、tuple等),或使用tf.constant、tf.Variable把Python对象转换为TensorFlow张量。
;