針對單一optimizer使能amp
對於單一optimizer,使能amp只需要以下修改兩部分即可:
1. **中optimizer之後新增:
optimizer = # ... some optimizer
from apex import amp
amp_handle = amp.init()
2. 修改**中反向迭代部分:
# ... do a bunch of stuff to compute a loss
loss.backward()
optimizer.step()
# ...finish the iteration
修改為# ... same as before
with amp_handle.scale_loss(loss, optimizer) as scaled_loss:
scaled_loss.backward()
optimizer.step()
# ... same as before
針對多optimizer使能amp
多optimizer使能amp相較單一optimizer複雜,需要顯性的warp多個optimizer,並處理多個loss的反向迭代,例如:
amp_handle = amp.init()
optimizer = amp_handle.wrap_optimizer(optimizer, num_loss=2)
optimizer.zero_grad()
loss1 = computeloss1(model)
with optimizer.scale_loss(loss1) as scaled_loss:
scaled_loss.backward()
loss2 = computeloss2(model)
with optimizer.scale_loss(loss2) as scaled_loss:
scaled_loss.backward()
optimizer.step()
amp新增自定義函式
在amp新增自定義函式的支援有兩種方法,分別使用function annotation或者函式顯性註冊如下所示:
對於自定義函式fru
from backend import frubackend
def fru(input, hidden, weight, bias):
# call to cuda code
frubackend(input, hidden, weight, bias)
使用function annotation
@amp.half_function
def fru(input, hidden, weight, bias):
使用顯性註冊
import backend
amp.register_half_function(backend, 'frubackend')
amp.init()
此處的function annotation有三種型別分別是:
類似顯性註冊也有對應三種方式,分別是:
amp.register_half_function(module, function_name)
amp.register_float_function(module, function_name)
amp.register_promote_function(module, function_name)
這裡需要注意的是,採用顯性註冊需要在amp.init()之前。
一鍵回家 Excel一鍵美化報表
報表做得太普通,怎麼美化?就像下面 excel一鍵美化報表,早點回家不加班,看這裡!具體操作 1 選中報表 2 同時按住ctr t,一鍵美化報表。備註 按住 ctrl t 一鍵美化報表!以上就是用excel一鍵美化報表的方法!動手試試吧小夥伴們!往期文章 1.excel自動記錄資料登記時間和修改時間...
ubuntu一鍵安裝LAMP 及一鍵解除安裝
一鍵安裝lamp服務 sudo tasksel install lamp server 一鍵解除安裝lamp sudo tasksel remove lamp server 注意 lamp linux apache mysql php 通過上面的命令解除安裝lamp時不免把linux系統本身的東西解...
C 一鍵關閉啟動服務,一鍵禁用服務
登錄檔操作 public class gf regreadwrite catch 設定路徑為keypath,鍵名為keyname的登錄檔鍵值為keyval static public bool setregval registrykey rootkey,string keypath,string k...