这篇文章主要为大家展示了PyTorch中torch.tensor和torch.tensor有什么区别,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。
众所周知,numpy作为Python中数据分析的专业第三方库,比Python自带的数学库速度更快。同样的,在PyTorch中,有一个类似于numpy的库,称为Tensor.Tensor自称为神经网络界的numpy。
1,产生的数组类型为numpy。ndarray;
2,会将ndarray放入CPU中进行运算;
3,导入方式为进口numpy np,后续通过np.array([1, 2])建立数组;
4, numpy中没有x.type()的用法,只能使用类型(x)。
1,产生的数组类型为火炬。张量;
2,会将张量放入GPU中进行加速运算(如果有GPU);
3,导入方式为进口火炬,后续通过torch.tensor([1, 2])或torch.tensor([1, 2])建立数组;
4张量中查看数组类型既可以使用类型(x),也可以使用x.type()。但是更加推荐采用x.type(),具体原因详见下文。
,举例(以下代码均在Jupyter笔记本上运行且通过):
numpy:
进口numpy np x=np.array ([1,2]) #之所以这么写,是为了告诉大家,在Jupyter笔记本中,是否带有打印()函数打印出来的效果是不一样的~ x #阵列([1,2]) 打印(x) # (1 2) 类型(x) # numpy.ndarray print(类型(x)) # & lt;类& # 39;numpy.ndarray& # 39;比; #注意:numpy中没有x.type()的用法,只能使用类型(x) ! ! !
张量:
进口火炬#注意,这里是进口火炬,不是进口张量! ! ! x=torch.tensor ([1,2]) x #张量([1,2]) 打印(x) #张量([1,2]),注意,这里与numpy就不一样了! 类型(x) # torch.Tensor print(类型(x)) # & lt;类& # 39;torch.Tensor& # 39;比; x.type () # & # 39; torch.LongTensor& # 39;,注意:numpy中不可以这么写,会报的错! ! ! print (x.type ()) # torch.LongTensor,注意:numpy中不可以这么写,会报的错! ! !
numpy与张量在使用上还有其他差别。由于不是本文的重点,故暂不详述。后续可能会更新~,,,
,,,,细心的读者可能注意到了,通过张量建立数组有torch.tensor([1, 2])或torch.tensor([1, 2])两种方式。那么,这两种方式有什么区别呢?
,,,,(1)torch.tensor是从数据中推断数据类型,而torch.tensor是torch.empty(会随机产生垃圾数组,详见实例)和torch.tensor之间的一种混合。但是,当传入数据时,torch.tensor使用全局默认dtype (FloatTensor);
,,,,(2)torch.tensor(1)返回一个固定值1,而torch.tensor(1)返回一个大小为1的张量,它是初始化的随机值。
进口火炬#注意,这里是进口火炬,不是进口张量! ! ! x=torch.tensor ([1,2]) x #张量([1,2]) 打印(x) #张量([1,2]),注意,这里与numpy就不一样了! 类型(x) # torch.Tensor print(类型(x)) # & lt;类& # 39;torch.Tensor& # 39;比; x.type () # & # 39; torch.LongTensor& # 39;,注意:numpy中不可以这么写,会报的错! ! ! print (x.type ()) # torch.LongTensor,注意:numpy中不可以这么写,会报的错! ! ! y=torch.Tensor ([1,2]) y #张量([1。2 .]),因为torch.Tensor使用全局默认dtype (FloatTensor) 打印(y) #张量([1。2 .]),因为torch.Tensor使用全局默认dtype (FloatTensor) 类型(y) # torch.Tensor print(类型(y)) # & lt;类& # 39;torch.Tensor& # 39;比; y.type () # & # 39; torch.FloatTensor& # 39;,注意:这里就与上面不一样了!张量→LongTensor,张量→FloatTensor ! ! ! print (y.type ()) # torch.FloatTensor,注意:这里就与上面不一样了!张量→LongTensor,张量→FloatTensor ! ! ! z=torch.empty ([1,2]) z #随机运行两次,结果不同:张量([[0。,0。]]),张量([[1.4013 e-45, 0.0000 e + 00]]) 打印(z) #随机运行两次,结果不同:张量([[0。,0。]]),张量([[1.4013 e-45, 0.0000 e + 00]]) 类型(z) # torch.Tensor print(类型(z)) # & lt;类& # 39;torch.Tensor& # 39;比; z.type () # & # 39; torch.FloatTensor& # 39;,注意:空()默认为torch.FloatTensor而不是torch.LongTensor print (z.type ()) # torch.FloatTensor,注意:空()默认为torch.FloatTensor而不是torch.LongTensor # torch.tensor (1) torch.tensor(1)和torch.empty(1)的对比: t1=torch.tensor (1) t2=torch.Tensor (1) t3=torch.empty (1) t1 #张量(1) 打印(t1) #张量(1) 类型(t1) # torch.Tensor print(类型(t1) # & lt;类& # 39;torch.Tensor& # 39;比; t1.type () # & # 39; torch.LongTenso& # 39; # torch.LongTensor打印(t1.type ()) t2 #随机运行两次,结果不同:张量([2.8026 e-45]),张量([0]) 打印(t2) #随机运行两次,结果不同:张量([2.8026 e-45]),张量([0]) 类型(t2) # torch.Tensor print(类型(t2)) # & lt;类& # 39;torch.Tensor& # 39;比; t2.type () # & # 39; torch.FloatTensor& # 39; # torch.FloatTensor打印(t2.type ()) t3 #随机运行两次,结果不同:张量([0]),张量([1.4013 e-45]) 打印(t3) #随机运行两次,结果不同:张量([0]),张量([1.4013 e-45]) 类型(t3) # torch.Tensor print(类型(t3)) # & lt;类& # 39;torch.Tensor& # 39;比; t3.type () # & # 39; torch.FloatTensor& # 39; print (t3.type ()) # torch.FloatTensorPyTorch中torch.tensor和torch.tensor有什么区别