快捷方式

ShapeEnv

class torch.fx.experimental.symbolic_shapes.ShapeEnv(*, should_record_events=None, tracked_fakes=None, **kwargs)[source][source]
add_var_to_val(expr, val)[原始碼][原始碼]

新增一個新的符號到符號環境中。

bind_symbols(placeholders, args)[原始碼][原始碼]

給定一對 placeholders(帶有符號大小的假張量)和具體參數(帶有實際大小的常規張量)的列表,返回一個字典,該字典將每個符號映射到它的實際值。 因此,舉例來說,如果您有一個大小為 (s0, s1) 的 placeholder,將 (2, 4) 綁定到它會得到 {s0: 2, s1: 4}。 這不能保證綁定 ShapeEnv 中的所有符號; 如果符號沒有出現在任何 placeholder 中,我們就不能綁定它,並且已經有替換的符號將不會被綁定。

這與 evaluate_guards 有點重複,但差異足夠大,因此製作另一個副本似乎是最簡潔的。 假設 guard 已經檢查過,但如果成本不高,我們會檢查一下是否有詐。

回傳型別

Dict[sympy.Symbol, int]

bound_sympy(expr, size_oblivious=False)[原始碼][原始碼]

給定一個 sympy 表達式,計算它可以是什麼值的 ValueRanges 邊界

回傳型別

ValueRanges

check_equal(other)[原始碼][原始碼]

比較另一個 ShapeEnv 是否等效

cleanup()[原始碼][原始碼]

中斷參考循環。

這會破壞堆疊。 如果您真的想保留它們,我們只需要某種方法來中斷程式碼物件上的參考。

create_symbol(val, source, dynamic_dim=DimDynamic.DUCK, constraint_dim=None, positive=True, do_not_specialize_zero_one=False, symbolic_context=None)[原始碼][原始碼]

建立一個新的符號,該符號由這個 ShapeEnv 追蹤

回傳型別

Expr

create_symbolic_sizes_strides_storage_offset(ex, source, *, symbolic_context=None)[原始碼][原始碼]

傳回給定張量的符號大小和步幅的列表。 我們盡力用大小來表達步幅,以便不引入新的符號變數。

回傳型別

Tuple[Tuple[Union[int, SymInt], …], Tuple[Union[int, SymInt], …], Union[int, SymInt]]

create_symboolnode(sym)[原始碼][原始碼]

從 sympy 布林表達式建立一個 SymBool 物件

回傳型別

SymBool

create_symfloatnode(sym, *, hint, source=None)[原始碼][原始碼]

從符號表達式建立一個 SymFloat 值

回傳型別

Union[float, SymFloat]

create_symintnode(sym, *, hint, source=None)[原始碼][原始碼]

從符號表達式建立一個 SymInt 值

如果您知道要建立的 SymInt 目前的提示值,請將其傳遞到 hint。 否則,傳遞 None,我們會盡力猜測

回傳型別

Union[int, SymInt]

create_unbacked_symbool()[原始碼][原始碼]

建立一個沒有提示值的符號布林值

回傳型別

SymBool

create_unbacked_symfloat()[原始碼][原始碼]

建立一個沒有提示值的符號浮點數

回傳型別

SymFloat

create_unbacked_symint(source=None)[原始碼][原始碼]

建立一個沒有提示值的符號整數

回傳型別

SymInt

create_unspecified_symbol(val, source, dynamic_dim=DimDynamic.DUCK, constraint_dim=None, symbolic_context=None)[原始碼][原始碼]

建立一個具有未指定值的符號

與標準符號相比,我們不假設該值為正數,也不針對零或一值進行特化。

回傳型別

Expr

create_unspecified_symint_and_symbol(value, source, dynamic_dim)[原始碼][原始碼]

建立一個包裝新未指定符號的 SymInt

回傳型別

Union[int, SymInt]

defer_runtime_assert(orig_expr, msg, fx_node=None)[原始碼][原始碼]

建立一個在執行階段檢查的斷言

參數
  • orig_expr (sympy.Expr) – 要斷言為 true 的布林表達式

  • msg (str) – 斷言失敗時顯示的訊息

  • fx_node (Optional, torch.fx.Node) – self.graph 中與該表達式對應的節點(如果適用)

回傳型別

bool

deserialize_symexpr(code)[原始碼][原始碼]

供 compile_fx 使用,以反序列化 symexprs

回傳型別

Union[SymInt, SymFloat, SymBool]

evaluate_guards_expression(code, args)[原始碼][原始碼]

預期與 produce_guards_expression() 一起使用。針對給定的具體 args 評估由 produce_guards_expression 產生的表達式。

回傳型別

bool

evaluate_guards_for_args(placeholders, args, *, ignore_static=True)[原始碼][原始碼]

為圖形的 placeholder 值產生 guard,並使用 args 評估 guard

回傳型別

bool

evaluate_symexpr(code)[原始碼][原始碼]

供 compile_fx 使用,以評估 symexprs

回傳型別

Union[int, float, bool]

format_guards(verbose=False)[原始碼][原始碼]

格式化此 shape env 的 guard 表達式,如果 verbose 為 True,則包含可選的追溯資訊

回傳型別

str

freeze()[原始碼][原始碼]

凍結此 ShapeEnv 以停止累積 guard

凍結的 ShapeEnv 將忽略在其上產生的任何進一步的 guard,並且只會發出警告,這可能會導致準確性問題。

freeze_runtime_asserts()[原始碼][原始碼]

凍結此 ShapeEnv 以停止新增延遲的 runtime asserts。

如果您嘗試在凍結時安裝新的 runtime assert,我們會報錯。 這表示降低違規,或者可能是我們靜態地知道已經為 True 的東西,但我們以不明顯可解除的方式再次檢查它。

get_axioms(symbols=None, compute_hint=False)[原始碼][原始碼]

給定表達式中的符號,它會返回所有具有這些符號的 runtime asserts,並與所有 guard 連接。 如果 symbols 為 None,它會返回所有 runtime asserts (和所有 guard)

回傳型別

Tuple[Boolean, …]

get_implications(e)[原始碼][原始碼]

給定一個表達式,它會返回一個由它推導出的謂詞列表

回傳型別

Tuple[Tuple[Boolean, BooleanAtom], …]

get_nontrivial_guards()[原始碼][原始碼]

返回一個 guard 運算式的列表,這些運算式並非靜態已知 (即,並非簡單的)

回傳型別

List[Boolean]

get_pruned_guards(symints)[source][source]

取得一個 guard 列表,但經過精簡,因此僅提供引用傳入輸入中的 symints 的 guard

回傳型別

List[ShapeGuard]

ignore_fresh_unbacked_symbols()[source][source]

表示新分配的未支援的 SymInts 正在被丟棄

回傳型別

Iterator[None]

is_unbacked_symint(symbol)[source][source]

檢查 sympy 符號是否符合未支援符號的命名慣例

回傳型別

bool

produce_guards(*args, **kwargs)[source][source]

類似於 produce_guards_verbose,但僅返回非 verbose 的 guard 運算式 (不產生 verbose guard。)

回傳型別

List[str]

produce_guards_expression(placeholders, *, guards=None, ignore_static=True)[source][source]

預計與 evaluate_guards_expression() 一起使用。為給定的 placeholders 產生 guards,並返回一個字串運算式,該運算式將由 evaluate_guards_expression 給定 placeholders 的具體值來評估。

回傳型別

Optional[str]

produce_guards_verbose(placeholders, sources, source_ref=<function ShapeEnv.<lambda>>, *, guards=None, input_contexts=None, equalities_inputs=None, _simplified=False, ignore_static=True)[source][source]

產生一個 guard 字串的列表,當在一個為所有來源定義 tensors 的上下文中評估時,根據列表中 guards 的評估結果為 True 或 False。主要由 Dynamo 使用,但這也有助於 guards 的手動測試 (請參閱 evaluate_guards_for_args)

為了方便測試,允許來源為 str,在這種情況下,我們將假設它是 LocalSource

simplified 允許您省略 duck sizing、相等性和 0/1 guards。 當您不關心樣板 guards 時,這對於測試很有用,並且對於使用者輸出也可能很有用 (但要小心;某些相等性 guards 並非簡單! 最好也獲得簡化的輸出以將它們列印出來)。 它是私有的,因為它不適用於正常使用

回傳型別

Tuple[List[str], List[str]]

replace(expr)[source][source]

將符號替換應用於給定運算式中的任何符號

回傳型別

_SympyT

set_unbacked_var_to_val(k, v)[source][source]

僅在 propagate_real_tensors 時使用;為未支援的符號註冊一個值,該值可以用作解決提示的最後手段。

simplify(expr)[原始碼][原始碼]

使用已知的約束和替換來簡化給定的 expr

回傳型別

_SympyT

size_hint(expr, *, allow_none=False)[原始碼][原始碼]

從我們擁有的底層形狀取得給定表達式的大小提示。 不引入保護 (guard),所以只有在你能保證你的程式碼對於任意形狀仍然有效時才使用它 (例如優化決策)。

回傳型別

Optional[Basic]

suppress_guards()[原始碼][原始碼]

Context manager 用於忽略內部產生的所有保護 (guards)

回傳型別

_GeneratorContextManager[None]

文件

存取 PyTorch 的完整開發者文件

檢視文件

教學

取得針對初學者和進階開發者的深度教學

檢視教學

資源

尋找開發資源並獲得您的問題解答

檢視資源