PyTorch,简单来说,就是以Python为基础,支持GPU计算和深度学习的平台。

Tensors

张量可以视作NumPy的ndarray,区别在于张量可以使用GPU加速。

由于PyTorch是在Python的基础上设计的,所以很多操作和Python很相像。

在使用张量前,先引入torch包:
What is PyTorch
What is PyTorch
What is PyTorch
可以在构建时指定数据类型,但要注意的一点是,类型前必须调用torch包,否则会报错:
What is PyTorch
What is PyTorch
也可以直接使用数据定义张量,张量的数据类型由输入数据决定:
What is PyTorch
What is PyTorch
还可以使用函数建立张量:
What is PyTorch
What is PyTorch
What is PyTorch
这里torch.size实际上是个tuple,可以对其做tuple的运算:

What is PyTorch

Operations



PyTorch的矩阵加减没什么好说的,可以用符号,也可以用函数来做,值得一提的是它在使用函数时可以将结果直接赋予变量。

What is PyTorch
减的函数是sub,点乘为mul,相乘为mm,除为div。此外,在函数名后加_,会让变量存储计算后的结果。

类似NumPy中的一些操作也是可以的:
What is PyTorch
reshape的函数是view——我的理解是相当于你划了指定长宽的框,然后把传进去的矩阵的值依次按顺序填好:
What is PyTorch
-1的意思是缺省,它的值根据其他值来推出:
What is PyTorch
-1可以放在任何位置,而且可以用于多维矩阵:
What is PyTorch
当你的张量只有一个元素时,可以使用item来获取其值:
What is PyTorch
这可以利用循环结构或随机存取来获得张量的值。

NumPy Bridge



可以使用类型转换函数将张量转换为NumPy,但反过来不行。

当张量存储在CPU中时,它和由它转换的NumPy共享存储,改变其中一个的值也会同步改变另一个:
What is PyTorch
从NumPy转换为张量要稍复杂些:
What is PyTorch
我们可以使用.to方法来将张量移动到其它设备上计算:
What is PyTorch
在运行后可以很明显地感到,结果比在cpu上运行要出得慢一些。这些时间应该是张量传递到cuda再传递回来所花的时间,由于数据量比较小,传递多花的时间要比计算节省的时间多很多。

相关文章: