1 前言
在学习李沐在B站发布的《动手学深度学习》PyTorch版本教学视频中发现在操作使用PyTorch方面有许多地方看不懂,往往只是“动手”了,没有动脑。所以打算趁着寒假的时间好好恶补、整理一下PyTorch的操作,以便跟上课程。
学习资源:
- B站up主:我是土堆的视频:PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】
- PyTorch中文手册:(pytorch handbook)
- Datawhale开源内容:深入浅出PyTorch(thorough-pytorch)
2 python中两个重要基本函数
-
dir():
打开,看见package里面有啥东西- 打开看见一个
package
里面有什么功能,如:dir(pytorch)
,输出1,2,3
。还可以逐级往下用dir()
打开,如:dir(pytorch.3)
,输出a, b, c
。
- 打开看见一个
-
help():
说明书;官方说明文档- 看具体的使用说明。用
dir()
打开之后,知道里面具体有哪些东西了,就可以用help()
来看如何使用,如:help(pytorch.3.a)
- 看具体的使用说明。用
下面我们来使用 dir()
试着找一下 torch.cuda.is_available()
这个函数
import torch
dir(torch) # 这句的输出里面含有'cuda'
['AVG',
'AggregationType',
'AliasDb',
'AnyType',
...
'_C',
'_StorageBase',
'_VF',
'__all__',
'__annotations__',
'__builtins__',
...
'ctypes',
'cuda',
'cuda_path',
'cuda_version',
'cudnn_affine_grid_generator',
...
'sqrt_',
...] # 输出太长删减了不必要的部分
dir(torch.cuda) # 这句的输出里面就可以找到 'is_available'
['Any',
'BFloat16Storage',
...
'is_available',
'is_initialized',
'list_gpu_processes',
...
'traceback',
'warnings'] # 输出太长删减了不必要的部分
dir(torch.cuda.is_available) # 这一层还是用很多输出
['__annotations__',
'__call__',
'__class__',
'__closure__',
'__code__',
'__defaults__',
'__delattr__',
'__dict__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__get__',
'__getattribute__',
'__globals__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__kwdefaults__',
'__le__',
'__lt__',
'__module__',
'__name__',
'__ne__',
'__new__',
'__qualname__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__']
在 dir(torch.cuda.is_available)
这句的输出中我们可以看到这里所有的输出都是 前后分别带有两个下划线的, 和之前两个有所区别。这里的双下划线是一种规范,代表着我们不可以随意去篡改,说明 torch.cuda.is_available
这里就不再是一个package
分隔区,而是一个 确确实实的函数 了,这里我们就可以使用 help()
方法来看这个函数是如何使用的。如下:
help(torch.cuda.is_available)
Help on function is_available in module torch.cuda:
is_available() -> bool
Returns a bool indicating if CUDA is currently available.
即该函数返回一个布尔值,这个布尔值对应了CUDA是否可用
这里需要注意的是我们放入 help()
中的应该是 torch.cuda.is_available
而不是 torch.cuda.is_available()
,这样放入的才是 函数本身。
如果放入 torch.cuda.is_available()
,实际上就是把这个函数 当前的返回值 放入了。在 python
中输入 torch.cuda.is_available()
,返回一个 True
,则 help(torch.cuda.is_available())
等价于 help(True)