Pytorch 的 常用 操作

2021-10-10 20:08:41 字數 1794 閱讀 2058

# 一些簡單的操作

torch.view()

torch.tensor()

torch.expand(bs, -1)

matrix.topk(number, dim=1, largest=true, sorted=true)

matrix.zero_().scatter_(1, label, 1) # matrix變為 one-hot 標籤

matrix.sort(dim=1, true) # true, 從大到小,預設從小到大

torch.index_select(matrix, dim=0, index)

torch.cat((a,b), dim=0)

torch.unbind(features, dim=1) # 刪除dim維度,返回乙個陣列,包含沿著指定維dim切片後的各個切片

torch.matmul(a, b.t)

torch.unique(label).numel() # 返回label裡標籤的類別數

torch.cat((xi, xj), dim=0)

torch.mm() # 矩陣相乘

torch.norm(x, dim=1) #預設求2範數

torch.norm(x, p=1) # 求一範數

torch.exp()

### thop 庫 , 統計 pytorch 模型的 flops 和參數量

from thop import clever_format

from thop import profile

model = model(feature_dim).cuda()

input = randn(1,3,32,32)

flops, params = profile(model, inputs=input.cuda)

flops, params = clever_format([flops, params])

#檔案路徑

import os

if not os.path.exists('models'):

os.makedirs('models')

### pytorch 學習率衰減 lr_scheduler

### torch.optim.lr_scheduler 提供了一些基於 epoch 調整學習率的方法,基本使用方法如下:

from torch.optim.lr_scheduler import steplr

# assuming optimizer uses lr = 0.05 for all groups

# lr = 0.05 if epoch < 30

# lr = 0.005 if 30 <= epoch < 60

# lr = 0.0005 if 60 <= epoch < 90

# ...

optimizer = torch.optim.sgd(model.parameters(), lr=0.05, momentum=0.9, weight_decay=1e-4)

scheduler = steplr(optimizer, step_size=30, gamma=0.1)

for epoch in range(start_epoch, epochs):

train(...)

validate(...)

scheduler.step()

pytorch 學習率衰減 lr_scheduler~1

pytorch 學習率衰減 lr_scheduler~2

Pytorch的基本操作

建立 檢視形狀 建立指定形式的張量 操作方法 加減乘除 以及操作裝置 cpu gpu 1 torch.tesor 建立張量 2 torch.view 對張量進行降維 3 torch.size 檢視張量的形狀 4 torch.ones torch.zeros 建立指定形式的張量 5 torch.to ...

PyTorch入門(三)PyTorch常用操作

def bilinear kernel in channels,out channels,kernel size return a bilinear kernel tensor tensor in channels,out channels,kernel size,kernel size 返回雙線性...

pytorch常用函式

torch.cat torch.squeeze torch.unsqueeze torch.stack torch.sum torch.sum input dim,out none tensor input tensor 輸入張量 dim int 縮減的維度 out tensor,optional ...