本文主要介绍numpy和tensorflow的一些区别以及转化的方法以及tensor的概念。
1.numpy和tensorflow
Numpy是用来处理数组的科学计算库,其在深度学习兴起之前就已经存在,其不能很好的支持GPU计算,也不能支持自动求导。而tf正是为了弥补这些缺点而产生的。
2.tensor
在tf中我们经常会见到以下一些类型。
其中,Scalar代表一个标量(一维向量代表的是一个1*1的矩阵,其运算规则是遵循线性代数中的矩阵运算规则。而标量只是一个常数,它参与的是数乘运算。),其维度为0。Vector代表向量其维度为1,
Matrix代表一个矩阵。严格意义上的定义,当rank>2时,才能把矩阵叫做tensor,但是在TF中我们通常把维度为1的数据也可以叫做tensor。在此处从数学意义上说,不够严谨,但是在工程表达中没有差别。
3.numpy和tensor的转化
3.1首先判断是否为tensor:
假设:
a=np.arange(5)
使用如下命令判断是否为tensor:
tf.is_tensor(a)
Flase
3.2 转换
aa=tf.convert_to_tensor(a)
使用tf.convert_to_tensor可以把np转换为tensor,
4.其他函数
4.1 tensorflow我们还可以在不同的数据类型以及数据长度之间相互转化。
tf.cast(aa,dtype=tf.float32)
<tf.Tensor: id=32,shape=(5,),dtype=float32,numpy=array([0.,1.,2.,3.,4.],dtype=float32)>
使用cast函数可以转换不同数据之间的类型以及数据长度。以上程序是把aa从int64转换为float32数据类型。
4.2 Variable是指神经网络中可以变化的变量,主要是为了用来适应神经网络中参数更新的属性。
a=tf.range(5)
b=tf.Variable(a)