1. 程式人生 > >PyTorch筆記

PyTorch筆記

PyTorch快速入門

  1. 函式名後面帶下劃線_ 的函式會修改Tensor本身。例如,x.add_(y)和x.t_()會改變 x,但x.add(y)和x.t()返回一個新的Tensor, 而x不變。
  2. Tensor和numpy物件共享記憶體,所以他們之間的轉換很快,而且幾乎不會消耗什麼資源。但這也意味著,如果其中一個變了,另外一個也會隨之改變。
  3. t.tensor()總是會進行資料拷貝,新tensor和原來的資料不再共享記憶體。所以如果你想共享記憶體的話,建議使用torch.from_numpy()或者tensor.detach()來新建一個tensor, 二者共享記憶體。
  4. 深度學習的演算法本質上是通過反向傳播求導數,而PyTorch的autograd模組則實現了此功能。在Tensor上的所有操作,autograd都能為它們自動提供微分,避免了手動計算導數的複雜過程。要想使得Tensor使用autograd功能,只需要設定tensor.requries_grad=True.
  5. grad在反向傳播過程中是累加的(accumulated),這意味著每一次執行反向傳播,梯度都會累加之前的梯度,所以反向傳播之前需把梯度清零。
  6. torch.nn是專門為神經網路設計的模組化介面。nn構建於 Autograd之上,可用來定義和執行神經網路。nn.Module是nn中最重要的類,可把它看成是一個網路的封裝,包含網路各層定義以及forward方法,呼叫forward(input)方法,可返回前向傳播的結果。
  7. 定義網路時,需要繼承nn.Module,並實現它的forward方法,把網路中具有可學習引數的層放在建構函式__init__中。只要在nn.Module的子類中定義了forward函式,backward函式就會自動被實現(利用autograd)。網路的可學習引數通過net.parameters()返回,net.named_parameters可同時返回可學習的引數及名稱。