本文簡要介紹python語言中 torch.jit.fork
的用法。
用法:
torch.jit.fork(func, *args, **kwargs)
func(可調用的或者torch.nn.Module) -將被調用的 Python 函數或
torch.nn.Module
。如果在 TorchScript 中執行,它將異步執行,否則不會。跟蹤的 fork 調用將在 IR 中捕獲。*args-調用
func
的參數。**kwargs-調用
func
的參數。
對
func
執行的引用。值T
隻能通過強製完成func
到torch.jit.wait
來訪問。torch.jit.Future[T]
創建一個執行
func
的異步任務和對此執行結果的值的引用。fork
將立即返回,因此func
的返回值可能尚未計算。要強製完成任務並訪問返回值,請在 Future 上調用torch.jit.wait
。使用返回T
的func
調用的fork
被鍵入為torch.jit.Future[T]
。fork
調用可以任意嵌套,並且可以使用位置和關鍵字參數調用。隻有在 TorchScript 中運行時才會發生異步執行。如果在純 python 中運行,fork
將不會並行執行。fork
在跟蹤時調用時也不會並行執行,但是fork
和wait
調用將在導出的 IR 圖中捕獲。警告
fork
任務將不確定地執行。我們建議隻為不修改其輸入、模塊屬性或全局狀態的純函數生成並行 fork 任務。示例(fork 一個自由函數):
import torch from torch import Tensor def foo(a : Tensor, b : int) -> Tensor: return a + b def bar(a): fut : torch.jit.Future[Tensor] = torch.jit.fork(foo, a, b=2) return torch.jit.wait(fut) script_bar = torch.jit.script(bar) input = torch.tensor(2) # only the scripted version executes asynchronously assert script_bar(input) == bar(input) # trace is not run asynchronously, but fork is captured in IR graph = torch.jit.trace(bar, (input,)).graph assert "fork" in str(graph)
示例(fork 一個模塊方法):
import torch from torch import Tensor class AddMod(torch.nn.Module): def forward(self, a: Tensor, b : int): return a + b class Mod(torch.nn.Module): def __init__(self): super(self).__init__() self.mod = AddMod() def forward(self, input): fut = torch.jit.fork(self.mod, a, b=2) return torch.jit.wait(fut) input = torch.tensor(2) mod = Mod() assert mod(input) == torch.jit.script(mod).forward(input)
參數:
返回:
返回類型:
相關用法
- Python PyTorch frexp用法及代碼示例
- Python PyTorch fft2用法及代碼示例
- Python PyTorch fftn用法及代碼示例
- Python PyTorch flip用法及代碼示例
- Python PyTorch frombuffer用法及代碼示例
- Python PyTorch float_power用法及代碼示例
- Python PyTorch floor_divide用法及代碼示例
- Python PyTorch fractional_max_pool3d用法及代碼示例
- Python PyTorch frac用法及代碼示例
- Python PyTorch freeze用法及代碼示例
- Python PyTorch fp16_compress_hook用法及代碼示例
- Python PyTorch fftshift用法及代碼示例
- Python PyTorch fake_quantize_per_channel_affine用法及代碼示例
- Python PyTorch flipud用法及代碼示例
- Python PyTorch fliplr用法及代碼示例
- Python PyTorch fp16_compress_wrapper用法及代碼示例
- Python PyTorch fractional_max_pool2d用法及代碼示例
- Python PyTorch fftfreq用法及代碼示例
- Python PyTorch from_numpy用法及代碼示例
- Python PyTorch filter_wikipedia_xml用法及代碼示例
- Python PyTorch fuse_modules用法及代碼示例
- Python PyTorch fasterrcnn_mobilenet_v3_large_320_fpn用法及代碼示例
- Python PyTorch fmax用法及代碼示例
- Python PyTorch fmin用法及代碼示例
- Python PyTorch fasterrcnn_resnet50_fpn用法及代碼示例
注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.jit.fork。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。