亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pytorch to(device)用法

發布時間:2020-09-24 11:31:43 來源:腳本之家 閱讀:244 作者:shaopeng568 欄目:開發技術

如下所示:

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.to(device)

這兩行代碼放在讀取數據之前。

mytensor = my_tensor.to(device)

這行代碼的意思是將所有最開始讀取數據時的tensor變量copy一份到device所指定的GPU上去,之后的運算都在GPU上進行。

這句話需要寫的次數等于需要保存GPU上的tensor變量的個數;一般情況下這些tensor變量都是最開始讀數據時的tensor變量,后面衍生的變量自然也都在GPU上

如果是多個GPU

在代碼中的使用方法為:

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

model = Model()

if torch.cuda.device_count() > 1:

 model = nn.DataParallel(model,device_ids=[0,1,2])

 

model.to(device)

Tensor總結

(1)Tensor 和 Numpy都是矩陣,區別是前者可以在GPU上運行,后者只能在CPU上;

(2)Tensor和Numpy互相轉化很方便,類型也比較兼容

(3)Tensor可以直接通過print顯示數據類型,而Numpy不可以

把Tensor放到GPU上運行

if torch.cuda.is_available():
 h = g.cuda()
 print(h)
torch.nn.functional
Convolution函數
torch.nn.functional.vonv1d(input,weight,bias=None,stride=1,padding=0,dilation=1,groups=1)
 
 
 
torch.nn.functional.conv2d(input,weight,bias=None,stride=1,padding=0,dilation=1,group=1)
 
parameter:
 input --輸入張量(minibatch * in_channels * iH * iW)-weights-– 過濾器張量 (out_channels, in_channels/groups, kH, kW) - bias – 可選偏置張量 (out_channels) - stride – 卷積核的步長,可以是單個數字或一個元組 (sh x sw)。默認為1 - padding – 輸入上隱含零填充。可以是單個數字或元組。 默認值:0 - groups – 將輸入分成組,in_channels應該被組數除盡
 
 
>>> # With square kernels and equal stride
>>> filters = autograd.Variable(torch.randn(8,4,3,3))
>>> inputs = autograd.Variable(torch.randn(1,4,5,5))
>>> F.conv2d(inputs, filters, padding=1)

Pytorch中使用指定的GPU

(1)直接終端中設定

CUDA_VISIBLE_DEVICES=1

(2)python代碼中設定:

import os

os.environ['CUDA_VISIBLE_DEVICE']='1'

(3)使用函數set_device

import torch

torch.cuda.set_device(id)

Pytoch中的in-place

in-place operation 在 pytorch中是指改變一個tensor的值的時候,不經過復制操作,而是在運來的內存上改變它的值。可以把它稱為原地操作符。

在pytorch中經常加后綴 “_” 來代表原地in-place operation, 比如 .add_() 或者.scatter()

python 中里面的 += *= 也是in-place operation。

下面是正常的加操作,執行結束加操作之后x的值沒有發生變化:

import torch
x=torch.rand(2) #tensor([0.8284, 0.5539])
print(x)
y=torch.rand(2)
print(x+y)  #tensor([1.0250, 0.7891])
print(x)  #tensor([0.8284, 0.5539])

下面是原地操作,執行之后改變了原來變量的值:

import torch
x=torch.rand(2) #tensor([0.8284, 0.5539])
print(x)
y=torch.rand(2)
x.add_(y)
print(x)  #tensor([1.1610, 1.3789])

以上這篇Pytorch to(device)用法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江阴市| 桂林市| 常州市| 陇西县| 上杭县| 彰化县| 南京市| 竹北市| 广南县| 湘潭市| 闸北区| 台北市| 分宜县| 无极县| 万源市| 密山市| 金堂县| 巴林右旗| 格尔木市| 合江县| 全南县| 泊头市| 吴旗县| 澜沧| 黑龙江省| 怀集县| 延津县| 乐都县| 内丘县| 丰镇市| 辛集市| 桐乡市| 彩票| 安平县| 辽中县| 庐江县| 蒙阴县| 新沂市| 鹤庆县| 万宁市| 东丰县|