官术网_书友最值得收藏!

3.3 NN構建塊

torch.nn包中有大量預定義的類,可以提供基本的功能。這些類在設計時就考慮了實用性(例如,它們支持mini-batch處理,設置了合理的默認值,并且權重也經過了合理的初始化)。所有模塊都遵循callable的約定,這意味著任何類的實例在應用于其參數時都可以充當函數。例如,Linear類實現了帶有可選偏差的前饋層:

061-01

上述代碼創建了一個隨機初始化的前饋層,包含兩個輸入和五個輸出,并將其應用于浮點張量。torch.nn包中的所有類均繼承自nn.Module基類,可以通過該基類構建更高級別的NN模塊。下一節將介紹如何自己構建,但是現在,我們先看一下所有nn.Module子類提供的方法。如下:

  • parameters():此函數返回所有需要進行梯度計算的變量的迭代器(即模塊權重)。
  • zero_grad():此函數將所有參數的梯度初始化為零。
  • to(device):此函數將所有模塊參數移至給定的設備(CPU或GPU)。
  • state_dict():此函數返回一個包含所有模塊參數的字典,對于模型序列化很有用。
  • load_state_dict():此函數使用狀態字典來初始化模塊。

所有的類都可在文檔(http://pytorch.org/docs)中找到。

現在,我將要提到一個非常方便的類,即Sequential,它可以將不同的層串起來。演示Sequential的最佳方法是通過一個示例:

062-01

上面的代碼定義了一個三層的NN,輸出層是softmax,softmax應用于第一維度(第零維度是批樣本),還包括整流線性函數(Rectified Linear Unit,ReLU)非線性層和dropout。我們給這個模型輸入一些數據:

062-02

mini-batch就是一個成功地遍歷了網絡的例子。

主站蜘蛛池模板: 双辽市| 耒阳市| 邓州市| 工布江达县| 宜章县| 双辽市| 长汀县| 延安市| 德安县| 安多县| 抚顺县| 平谷区| 福建省| 朝阳区| 沽源县| 刚察县| 饶河县| 乌恰县| 翼城县| 酉阳| 鄂尔多斯市| 延寿县| 北碚区| 来安县| 江源县| 文成县| 雷山县| 东山县| 志丹县| 呼图壁县| 遂溪县| 大荔县| 湄潭县| 阿合奇县| 繁峙县| 灌云县| 芦溪县| 中江县| 九江县| 汉中市| 仲巴县|