functorch¶
警告
我們已將 functorch 整合到 PyTorch 中。作為整合的最後一步,functorch API 從 PyTorch 2.0 開始已被棄用。請改用 torch.func API,並參閱遷移指南和文件以瞭解更多詳細資訊。
函數變換¶
vmap 是向量化映射; |
|
|
|
傳回一個函數,用於計算梯度和原始(或正向)計算的元組。 |
|
代表向量-雅可比矩陣乘積,傳回一個元組,其中包含將 |
|
代表雅可比矩陣-向量乘積,傳回一個元組,其中包含 func(*primals) 的輸出和「在 |
|
使用反向模式自動微分計算 |
|
使用正向模式自動微分計算 |
|
通過正向-反向策略計算 |
|
functionalize 是一個可以用於從函數中移除(中間)突變和別名的變換,同時保留函數的語義。 |
用於處理 torch.nn.Modules 的工具¶
一般來說,您可以對呼叫 torch.nn.Module
的函數進行變換。例如,以下是如何計算一個函數的雅可比矩陣的範例,該函數接受三個值並傳回三個值
model = torch.nn.Linear(3, 3)
def f(x):
return model(x)
x = torch.randn(3)
jacobian = jacrev(f)(x)
assert jacobian.shape == (3, 3)
但是,如果您想做一些事情,例如計算模型參數的雅可比矩陣,那麼需要一種方法來建構一個函數,其中參數是函數的輸入。這就是 make_functional()
和 make_functional_with_buffers()
的用途:給定一個 torch.nn.Module
,它們會傳回一個新的函數,該函數接受 parameters
和模組正向傳遞的輸入。
給定一個 |
|
make_functional(model, disable_autograd_tracking=False) -> func, params |
|
使用 |
如果您正在尋找有關修復批次正規化模組的資訊,請遵循此處的指南