1. 程式人生 > >pytorch學習筆記(二) 其他機制

pytorch學習筆記(二) 其他機制

broadcast機制

pytroch中的tensor和numpy中的ndarray一樣是支援broadcast的。支援原則是:

1.兩個tensor都至少有一維

2.從最後一維開始,要麼其中一個tensor的維數等於1,要麼兩個維數相同。

CUDA語法

pytorch可以通過一行程式碼實現資料在GPU和CPU之間的切換,並且在網路訓練過程中,你可以隨時將資料從GPU中拿出來進行操作,包括列印之類的,比tf要方便一些。例如:

x = torch.cuda.FloatTensor(1)
# x.get_device() == 0
y = torch.FloatTensor(1).cuda()
# y.get_device() == 0
with torch.cuda.device(1): # allocates a tensor on GPU 1 a = torch.cuda.FloatTensor(1) # transfers a tensor from CPU to GPU 1 b = torch.FloatTensor(1).cuda() # a.get_device() == b.get_device() == 1 c = a + b # c.get_device() == 1 z = x + y # z.get_device() == 0
# even within a context, you can give a GPU id to the .cuda call d = torch.randn(2).cuda(2) # d.get_device() == 2
pytoch可以允許使用者指定特定的GPU來建立tensor,一旦建立就只能在當前裝置下使用,跨GPU的操作目前是不允許的。

在多GPU環境中,充分利用GPU效能可以使用nn.DataParallel來將大的batch切成幾份,分別送到不同GPU中的模型中進行訓練,若你的batch只有1,卻仍然要使用多GPU的話,目前來說是沒有辦法將一個模型執行在幾個GPU上的。

序列化語法 pytorch中儲存模型也非常簡單。有兩種方法: 1.只儲存模型引數。這種方法得到的檔案更小,再隨後匯入模型時需要使用與之前相同的模型引數來構建網路然後初始化引數。
torch.save(the_model.state_dict(), PATH)
the_model = TheModelClass(*args, **kwargs)
the_model.load_state_dict(torch.load(PATH))
2.儲存全部模型,包括計算圖結構。
torch.save(the_model, PATH)
the_model = torch.load(PATH)

相關推薦

pytorch學習筆記() 其他機制

broadcast機制 pytroch中的tensor和numpy中的ndarray一樣是支援broadcast的。支援原則是: 1.兩個tensor都至少有一維 2.從最後一維開始,要麼其中一個tensor的維數等於1,要麼兩個維數相同。 CUDA語法 pytorch可

pytorch學習筆記(十一): 使用 pack_padded_sequence

在使用 pytorch 的 RNN 模組的時候, 有時會不可避免的使用到 pack_padded_sequence 和 pad_packed_sequence, 當使用雙向RNN的時候, 必須要使用 pack_padded_sequence !! .否則的話,

PyTorch學習筆記(12)——PyTorch中的Autograd機制介紹

在《PyTorch學習筆記(11)——論nn.Conv2d中的反向傳播實現過程》[1]中,談到了Autograd在nn.Conv2d的權值更新中起到的用處。今天將以官方的說明為基礎,補充說明一下關於計算圖、Autograd機制、Symbol2Symbol等內容。 0.

pytorch學習筆記):gradient

gradient 在BP的時候,pytorch是將Variable的梯度放在Variable物件中的,我們隨時都可以使用Variable.grad得到對應Variable的grad。剛建立Variable的時候,它的grad屬性是初始化為0.0的。 import tor

PyTorch 學習筆記(三):transforms的個方法

本文擷取自《PyTorch 模型訓練實用教程》,獲取全文pdf請點選:https://github.com/tensor-yu/PyTorch_Tutorial 文章目錄 一、 裁剪——Crop 1.隨機裁剪:transforms.Random

PyTorch 學習筆記):PyTorch的資料增強與資料標準化

本文擷取自《PyTorch 模型訓練實用教程》,獲取全文pdf請點選:https://github.com/tensor-yu/PyTorch_Tutorial 文章目錄 transform的使用 在實際應用過程中,我們會在資

Pytorch學習筆記)自己載入單通道圖片用作資料集訓練

      作者:灰色橡皮擦      pytorch 在torchvision包裡面有很多的的打包好的資料集,例如minist,Imagenet-12,CIFAR10 和CIFAR100。在torchvision的dataset包裡面,用的時候直接呼叫就行了。具體的呼叫格

Java併發學習筆記()-Executor捕獲異常機制

學習《java程式設計思想》的Executor捕獲異常的時候,發現程式碼輸出跟書上有出入,於是就研究了一下Executor的機制。 (一)異常捕獲例項 1、異常處理類MyUncaughtExceptionHandler public class MyUncaughtExc

Pytorch學習筆記

(3)批訓練包裝器DataLoader Pytorch 中提供了一種幫你整理你的資料結構的好東西, 叫做 DataLoader, 我們能用它來包裝自己的資料, 進行批訓練. import torch import torch.utils.data as Da

pytorch學習筆記(十):詳解 Module 類

Module 是 pytorch 提供的一個基類,每次我們要 搭建 自己的神經網路的時候都要繼承這個類,繼承這個類會使得我們 搭建網路的過程變得異常簡單。 本文主要關注 Module 類的內部是怎麼樣

深入理解JVM學習筆記(、JVM 垃圾回收機制---如何回收垃圾---回收策略【複製演算法】)

        上一節我們講到了標記-清除演算法因為需要進行兩次記憶體掃描導致效率不高,那麼這一節我們介紹一種複製演算法,比較好的解決了這個問題。        講複製演算法前,我們先回顧一下JVM的記憶體結構。JVM記憶體大體分為兩大塊,分別為執行緒共享區、執行緒獨佔區。

Pytorch學習筆記)使用Pytorch的常見錯誤彙總

那些年我們一起踩過的坑! Error 標籤範圍問題 這個錯誤出現在我參考別人的原始碼來訓練一個車型識別模型,共196類,設定輸出num_classes = 196,結果報下面錯誤,原因是我的輸入的標籤是1-196,超出索引範圍,正確標籤範圍

[PyTorch 學習筆記] 2.2 圖片預處理 transforms 模組機制

# PyTorch 的資料增強 我們在安裝`PyTorch`時,還安裝了`torchvision`,這是一個計算機視覺工具包。有 3 個主要的模組: - `torchvision.transforms`: 裡面包括常用的影象預處理方法 - `torchvision.datasets`: 裡面包括常用資料集

SpringMVC學習筆記:常用註解

title c學習 請求 pin 學習 lin att 詳解 stp 轉載請註明原文地址:http://www.cnblogs.com/ygj0930/p/6831976.html 一、用於定義類的註解:@Controller @Controller 用於標記在一個類上,

Scala學習筆記()(for循環相關)

spa nts multiple bool val turn 優化 n) 例子 Scala裏if...else語句 if語句不管是在哪種語言裏是使用最多的語句了. scala的if語句與java如出一轍. 舉個栗子就不再贅述: 一個 if 語句的語法: if(Boolean

ES6學習筆記()——字符串擴展

兩個 -m 開始 部分 學習筆記 erro xxx ocs 個數 相信很多人也和我一樣,不喜歡這樣循規蹈矩的逐條去學習語法,很枯燥乏味。主要是這樣學完一遍之後,沒過一段時間就忘到九霄雲外了。不如實際用到的時候研究它記得牢靠,所以我就整理成筆記,加深記憶的同時便於復習查看。

MySQL學習筆記(

發送 int 賦值 數據庫基礎知識 font 字符 需要 con spa -- 回顧 數據庫基礎知識: 關系型數據庫(磁盤),建立在關系模型上的數據庫,數據結構(二維表),浪費空間。 操作數據的指令集合:SQL(DDL,DML[DQL]和DCL) 完整性約束:表內和表之間(

Android第一行代碼學習筆記---在活動中使用Toast

一行代碼 就會 onclick log sta contex instance and undle Toast:是Android系統提供的一種非常好的提醒方式,在程序中可以使用它將一些短小的信息通知給用戶,這些信息會在一段時間後自動消失,並且不會占用任何屏幕空間。 首先需要

PyTorch學習筆記之初識word_embedding

spa clas eve rom embed con nbsp from print 1 import torch 2 import torch.nn as nn 3 from torch.autograd import Variable 4 5 word2i

framework7學習筆記:基礎知識

部分 cnblogs query 基礎 logs code 自己 $$ pan 一:DOM7 framework7有自己的 DOM7 - 一個集成了大部分常用DOM操作的高性能庫。它的用法和jQuery幾乎是一樣的,包括大部分常用的方法和jquery風格的鏈式調用。 在開發