本文簡要介紹python語言中 torch.gradient
的用法。
用法:
torch.gradient(input, *, spacing=1, dim=None, edge_order=1) → List of Tensors
input(
Tensor
) -表示函數值的張量spacing(
scalar
,list of scalar
,list of Tensor
, 可選的) -spacing
可用於修改input
張量的索引與樣本坐標的關係。如果spacing
是標量,則索引乘以標量以產生坐標。例如,如果spacing=2
索引 (1, 2, 3) 變為坐標 (2, 4, 6)。如果spacing
是標量列表,則相應的索引相乘。例如,如果spacing=(2, -1, 3)
索引 (1, 2, 3) 變為坐標 (2, -2, 9)。最後,如果spacing
是一維張量的列表,則每個張量都指定相應維度的坐標。例如,如果索引為 (1, 2, 3),張量為 (t0, t1, t2),則坐標為 (t0[1], t1[2], t2[3])dim(
int
,list of int
, 可選的) -近似梯度的一個或多個維度。默認情況下,計算每個維度的部分梯度。請注意,當指定dim
時,spacing
參數的元素必須與指定的暗淡對應。”edge_order(
int
, 可選的) -1 或 2,分別用於邊界 (“edge”) 值的 first-order 或 second-order 估計。
使用 second-order accurate central differences method 在一維或多維中估計函數 的梯度。
spacing
時,樣本完全由input
說明,輸入坐標到輸出的映射與張量索引到值的映射相同。例如,對於三維input
,所說明的函數是 和 。 的梯度是使用樣本估計的。默認情況下,當不指定當指定
spacing
時,它會修改input
與輸入坐標之間的關係。這在下麵的“Keyword Arguments” 部分中有詳細說明。通過獨立估計Taylor’s theorem with remainder 估計偏導數的每個內部點的值。讓 為內部點, 為與其相鄰的點, 處的部分梯度估計使用: 的每個偏導數來估計梯度。如果 在 中(它至少有 3 個連續導數),這個估計是準確的,並且可以通過提供更接近的樣本來改進估計。在數學上,使用
其中 是區間 中的一個數字,並使用 我們得出的事實:
注意
我們以相同的方式估計複域 中函數的梯度。
邊界點處的每個偏導數的計算方式不同。請參閱下麵的edge_order。
例子:
>>> # Estimates the gradient of f(x)=x^2 at points [-2, -1, 2, 4] >>> coordinates = (torch.tensor([-2., -1., 1., 4.]),) >>> values = torch.tensor([4., 1., 1., 16.], ) >>> torch.gradient(values, spacing = coordinates) (tensor([-3., -2., 2., 5.]),) >>> # Estimates the gradient of the R^2 -> R function whose samples are >>> # described by the tensor t. Implicit coordinates are [0, 1] for the outermost >>> # dimension and [0, 1, 2, 3] for the innermost dimension, and function estimates >>> # partial derivative for both dimensions. >>> t = torch.tensor([[1, 2, 4, 8], [10, 20, 40, 80]]) >>> torch.gradient(t) (tensor([[ 9., 18., 36., 72.], [ 9., 18., 36., 72.]]), tensor([[ 1.0000, 1.5000, 3.0000, 4.0000], [10.0000, 15.0000, 30.0000, 40.0000]])) >>> # A scalar value for spacing modifies the relationship between tensor indices >>> # and input coordinates by multiplying the indices to find the >>> # coordinates. For example, below the indices of the innermost >>> # 0, 1, 2, 3 translate to coordinates of [0, 2, 4, 6], and the indices of >>> # the outermost dimension 0, 1 translate to coordinates of [0, 2]. >>> torch.gradient(t, spacing = 2.0) # dim = None (implicitly [0, 1]) (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000], [ 4.5000, 9.0000, 18.0000, 36.0000]]), tensor([[ 0.5000, 0.7500, 1.5000, 2.0000], [ 5.0000, 7.5000, 15.0000, 20.0000]])) >>> # doubling the spacing between samples halves the estimated partial gradients. >>> >>> # Estimates only the partial derivative for dimension 1 >>> torch.gradient(t, dim = 1) # spacing = None (implicitly 1.) (tensor([[ 1.0000, 1.5000, 3.0000, 4.0000], [10.0000, 15.0000, 30.0000, 40.0000]]),) >>> # When spacing is a list of scalars, the relationship between the tensor >>> # indices and input coordinates changes based on dimension. >>> # For example, below, the indices of the innermost dimension 0, 1, 2, 3 translate >>> # to coordinates of [0, 3, 6, 9], and the indices of the outermost dimension >>> # 0, 1 translate to coordinates of [0, 2]. >>> torch.gradient(t, spacing = [3., 2.]) (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000], [ 4.5000, 9.0000, 18.0000, 36.0000]]), tensor([[ 0.3333, 0.5000, 1.0000, 1.3333], [ 3.3333, 5.0000, 10.0000, 13.3333]])) >>> # The following example is a replication of the previous one with explicit >>> # coordinates. >>> coords = (torch.tensor([0, 2]), torch.tensor([0, 3, 6, 9])) >>> torch.gradient(t, spacing = coords) (tensor([[ 4.5000, 9.0000, 18.0000, 36.0000], [ 4.5000, 9.0000, 18.0000, 36.0000]]), tensor([[ 0.3333, 0.5000, 1.0000, 1.3333], [ 3.3333, 5.0000, 10.0000, 13.3333]]))
參數:
關鍵字參數:
相關用法
- Python PyTorch greedy_partition用法及代碼示例
- Python PyTorch gumbel_softmax用法及代碼示例
- Python PyTorch get_tokenizer用法及代碼示例
- Python PyTorch gammainc用法及代碼示例
- Python PyTorch gammaincc用法及代碼示例
- Python PyTorch global_unstructured用法及代碼示例
- Python PyTorch gammaln用法及代碼示例
- Python PyTorch get_gradients用法及代碼示例
- Python PyTorch get_ignored_functions用法及代碼示例
- Python PyTorch get_default_dtype用法及代碼示例
- Python PyTorch gt用法及代碼示例
- Python PyTorch gather用法及代碼示例
- Python PyTorch gcd用法及代碼示例
- Python PyTorch get_graph_node_names用法及代碼示例
- Python PyTorch get_testing_overrides用法及代碼示例
- Python PyTorch generate_sp_model用法及代碼示例
- Python PyTorch gather_object用法及代碼示例
- Python PyTorch ge用法及代碼示例
- Python PyTorch frexp用法及代碼示例
- Python PyTorch jvp用法及代碼示例
- Python PyTorch cholesky用法及代碼示例
- Python PyTorch vdot用法及代碼示例
- Python PyTorch ELU用法及代碼示例
- Python PyTorch ScaledDotProduct.__init__用法及代碼示例
- Python PyTorch saved_tensors_hooks用法及代碼示例
注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.gradient。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。