1.使用ipdb调试
2.Tensor
(1)tensor是pytorch中的高维数组,与numpy的ndarrays类似(二者之间可相互转化),可使用gpu加速。
(2)函数名后带_,会修改tensor本身的值。(例如x.add(y)与x.add_(y)不一样。前者会加到tensor x上,后者会返回一个新的tensor。)
(3)关于tensor的一些操作
变形操作:tensor.view(),tensor.resize_()
索引操作:与numpy.ndarray类似
逐元素操作:一些数学运算函数
归并操作:输出形状小于输入形状。主要有一些数学统计函数。
比较操作:
线性代数:封装了Blas和Lapck,用法与接口与之类似。主要有一些矩阵运算函数。
(4)Tensor与Numpy
tensor类型转为numpy类型:用tensor.numpy()函数
numpy类型转为tensor类型:用torch.from_numpy() 或 torch.Tensor()函数
广播法则:
3.Autograd模块
autograd.Variable是Autograd模块中的核心类,封装了tensor,支持大部分关于tensor的操作,又有自己的一些属性。
Variable:data:tensor类型,用于保存Variable中的tensor(主要数据内容)
grad:Variable类型,用于保存data的梯度
grad_fn:指向一个function对象
补充
1.解决cuda out of memory的一些方法
[PyTorch]一个非常好的抢救outofmemory的方法
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2. Pytorch划分数据集的方法:torch.utils.data.Subset
3.python调试工具:https://github.com/cool-RR/PySnooper
4.pytorch获取中间变量梯度的方法:https://www.jianshu.com/p/ad66f2e38f2f