一句一句讀Pytorch(更新中)

試圖從code snippets 和 pytorch 源代碼 去理解深度學習概念與技巧

返回 總目錄文章 pytorch 的損失函數文檔解析

視頻筆記是按時間循序更新的,越往下越新

大部分視頻爭取控制在5-8分鐘以內,極少數時間在10分鐘以上。

如何使用pytorch的numpy

如何理解pytorch.Variable

pytorch如何求導數

pytorch如何求normL1L2

在代碼中列印函數公式

快速畫函數圖

構建與解剖源代碼的思考

結合具體應用來理解Norm_L2

如何翻閱pytorch源代碼從python到C

pytorch源代碼庫結構膚淺認知

pytorch 官方tutorials


tutorials 01-03

如何用pytorch構建模型

  • nn.Module, nn.Functional, forward, num_flat_features, inherit, overwrite

如何用pytorch完成一次正反向傳遞

  • net.parameters, loss.grad_fn.next_functions0, net.zero_grad
  • criterion = nn.MSELoss(), loss = criterion(output, target)
  • optimizer = optim.SGD(net.parameters(), lr=0.01), optimizer.zero_grad, optimizer.step

net.zero_grad() == 效用== optimizer.zero_grad()

  • net.parameters() == 效用== optimizer.param_groups0

net 與optimizer調取parameters方式不同

  • net.parameters() 生成 generator; 用for in loop調取所有參數
  • optimizer.param_groups 生成list, 然後optimizer.param_groups[0]是dict, 然後optimizer.param_groups0調取所有參數
  • lst = list(net.parameters()) 將generator轉化為list, 但必須賦值

optimizer.step是如何更新參數的

  • p.data.add_(-group["lr"], d_p)

如何調用net.conv1內部的method, attributes

  • net.conv1.weight, net.conv2.bias.grad, net.fc1.zero_grad

構建optim.SGD時到底發生了什麼

  • optimizer.param_groups[0].keys()

pytorch如何借用THNN計算MSELoss, 核實是否是THNN在工作

  • nn.MSELoss, nn._Loss, nn.module.Module, THNN,
  • pytorch/torch/lib/THNN/generic/MSECriterion.c, THNN_(MSECriterion_updateOutput)

自己的模型Net從nn.Module繼承了什麼

  • super(Net, self).__init__(), 在運行super class init中,同時繼承了所有的methods
  • Net overwrite init(), forward() write a new func num_flat_features() for itself

nn.Module裡面的dir與repr函數

  • self._modules.keys(), self.dict.keys()
  • lst = list(self._buffers.keys()), sorted(keys)

nn.Conv2d裡面構建了什麼

  • nn.Conv2d -> nn._ConvND -> nn.Module
  • nn._ConvND: init, reset_parameters

F.Conv2d裡面發生了什麼?

  • ConvNd = torch.C.functions.ConvNd

self.conv1(x) 先運行getattr再運行call

如何安裝gdb從而能一路debug from python to C/C++

  • 安裝求助
  • C/C++ gdb 問題基本解決 部分解決
  • gdb python 有待解決 no module libpython 似乎解決了
  • 剩下can"t read symbols 的warning 沒有真正解決

nn.MSELoss的解析01

  • MSELoss -> _Loss -> Module
  • 包含init, forward, pre_forward_hooks, forward_hooks, backward_hooks

nn.MSELoss的解析02

  • functions.thnn.MSELoss.apply(input, target, size_average) 調用torch.C 中的用於計算mseloss函數
  • ctx == _ContextMethodMixin, 至於是如何調用的,不清楚過程
  • 嘗試理解這種方法的廣泛性

optim.SGD的解析

  • init: 將params, defaults(包含超參數dict)重新打包到self.param_groups裡面
  • 方便zero_grad和step 使用

全流程梳理pytorch普通建模 代碼

  • part1 part2 part3 part4 part5 part6 part7 part8 part9
  • backend1: 從pytorch ConvNd 到Torch.csrc.autograd.functions....ConvForward
  • 從pytorch.relu通過backend到torch.Threshold
  • 從pytorch.maxpool2d通過backend到torch.C.spatialDilatedMaxPooling
  • 從pytorch.MSELoss通過backend到Torch.mseloss

全流程梳理pytorch 多分類建模 代碼

  • part1, part2, part3

二元分類問題的Loss設定的注意事項:代碼3

  • 如果用BCEWithLogitsLoss
  • features, targets的type 要統一為torch.FloatTensor
  • targets的size要規範為(-1,1)
  • 如果用CrossEntryLoss
  • targets的type一定要是torch.LongTensor
  • 摸索過程:真實發現錯誤和尋找解決方案的過程
  • part1, part2, part3

探索keras內部 冗長解讀

  • 查看keras內部主要的modules 0:00-7:50
  • keras.models.Sequential內部結構 --13:38
  • keras.legacy.interfaces...wrapper 讓keras1與keras2互通 -- 15:36
  • keras.models.add --22.10

為什麼pytorch對beginner更友好 解讀

看看debug方式閱讀keras代碼是不是比較困難

用pytorch構建自己的數據class 代碼文檔 part1, part2, part3, part4, 總結版

存儲自己的數據,transform,batch,shuffle

如何使用Variable.backward?

如何展示處理中間層的輸入和輸出值

如何查看某一層的parameters 代碼文檔


transfer_learning_tutorial

如何疊加多個圖片transformation 代碼文檔

ImageFolder如何將圖片folder轉化成模型數據格式

如何將變數信息注入到時間序列的顏色中

如何使用dataloader來做批量和隨機

給一個小批量圖做plotting

直接調用著名模型及其參數來用

調用的著名模型內部構造

量身修改訓練好的高級模型

調試優化演算法的LR的用途用法結構

train_model定製訓練函數的結構

scheduler.step和model.train用法

借用的高級模型的大部分參數如何保持不變

訓練完成後畫一個批量的圖

如何構建自己的dataset class


Deep Learning for NLP with Pytorch

NLP_pytorch_basics01 代碼文檔

如何設置random seed 方便數據repetition?但是用在哪裡呢?

如何用list 構建torch.Tensor (Vector, Matrix, 3D-tensor)? 如何構建random normal 2D 數據?如何連接2-3個2D tensor(row-bind, col-bind)? 如何在pytorch做reshape?

如何將list變成可以做gradient的Variable?如何從Variable中提取Tensor, gradient, 以及grad_fn? 如何求運算多次之後的值y相對於x(可求導的Variable)的導數?

Variable如何保持原來的記憶?

NLP_pytorch_basics02 代碼文檔

訓練模型識別西班牙和英文句子,內在參數能識別單詞是英文還是西文?

# 49 如何構建一個Linear object, lin? 如何讓input data 的shape與lin保持協調,然後用lin調用input data完成計算?

#98 F.relu是如何使用數據來完成計算的?F.softmax, F.log_softmax 內在的計算流程是怎樣的?

#238 如何準備英西翻譯數據?list of tuples(list, str)

#248 如何將所有句子中的獨特(不重複)單詞附上序號,存在dict里?

#259 回顧一下如何定義自己的模型?overwrite Module class; 為什麼特徵數 = vocab_size, 輸出值數 = num_labels?

#283 如何寫一個函數來計數每一個獨特字(在一句話中的頻率),返回1-row tensor (1, vocab_length)?

#290 如何用函數將label轉化為idx,返回long tensor?

#302 如何列印看看每一層layer的weight, bias?

# 343 模型的唯一層的參數(2,num_vocab) 是對每個詞的學習,訓練來認知是(spanish, english)?

# 345 如何構建一個negative log loss object?

# 380 creo 之前的tensor (0.14, 0.13), 之後的tensor(0.53, -0.25)


Custom C extensions for pytorch

如何為pytorch寫C函數extension


YunJey | pytorch-tutorial

讓pytorch使用tensorboard 代碼文檔

推薦閱讀:

Python 家族有多龐大
Python數據分析及可視化實例之CentOS7.2+Python3x+Flask部署標準化配置流程
Flask 實現小說網站 (二)
Python實現3D建模工具
Flask模板引擎:Jinja2語法介紹

TAG:PyTorch | 深度学习DeepLearning | Python |