快捷方式

ShapeEnv

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

在符號環境中新增新符號。

bind_symbols(placeholders, args)[source][source]

給定一對佔位符(帶有符號大小的偽張量)和具體引數(帶有真實大小的常規張量)列表,返回一個字典,將每個符號對映到其真實值。例如,如果有一個大小為 (s0, s1) 的佔位符,將其繫結到 (2, 4) 將得到 {s0: 2, s1: 4}。這不能保證繫結 ShapeEnv 中的所有符號;如果一個符號未出現在任何佔位符中,或者該符號已有替換,則無法繫結。

這與 evaluate_guards 有點重複,但差異足夠大,單獨建立一個副本似乎是最清晰的方式。這假設防護措施已經檢查過,儘管如果代價低廉,我們會檢查是否存在異常行為。

返回型別

dict[sympy.Symbol, int]

bound_sympy(expr, size_oblivious=False)[source][source]

給定一個 sympy 表示式,計算其可能值的 ValueRanges 界限

返回型別

ValueRanges

check_equal(other)[source][source]

比較另一個 ShapeEnv 是否等效

cleanup()[source][source]

打破引用迴圈。

這會銷燬堆疊。如果您確實想保留它們,我們只需要一種方法來打破對程式碼物件的引用。

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

建立由此 ShapeEnv 跟蹤的新符號

返回型別

表示式

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

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

返回型別

tuple[tuple[Union[int, torch.SymInt], …], tuple[Union[int, torch.SymInt], …], Union[int, torch.SymInt]]

create_symboolnode(sym)[source][source]

從 sympy 布林表示式建立 SymBool 物件

返回型別

SymBool

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

從符號表達式建立 SymFloat 值

返回型別

Union[float, SymFloat]

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

從符號表達式建立 SymInt 值

如果您知道要建立的 SymInt 當前提示值是什麼,請將其傳入 hint。否則,傳入 None,我們將盡力猜測。

返回型別

Union[int, SymInt]

create_unbacked_symbool()[source][source]

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

返回型別

SymBool

SymBool

create_unbacked_symfloat()[source][source]

返回型別

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

SymFloat

create_unbacked_symint(source=None)[source][source]

返回型別

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

SymInt

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

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

返回型別

表示式

與標準符號相比,我們不假設值為正,也不對零或一值進行特殊處理。

create_unspecified_symint_and_symbol(value, source, dynamic_dim)[source][source]

返回型別

Union[int, SymInt]

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

defer_runtime_assert(orig_expr, msg, fx_node=None)[source][source]

建立在執行時檢查的斷言
  • 引數

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

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

返回型別

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

bool

deserialize_symexpr(code)[source][source]

返回型別

供 compile_fx 反序列化 symexprs 時使用

Union[SymInt, SymFloat, SymBool]

evaluate_guards_expression(code, args)[source][source]

返回型別

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

預期與 produce_guards_expression() 一起使用。評估 produce_guards_expression 為給定具體引數生成的表示式。

evaluate_guards_for_args(placeholders, args, *, ignore_static=True)[source][source]

返回型別

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

為圖的佔位符值生成防護措施,並使用引數評估這些防護措施

evaluate_sym_node(sym_node, size_oblivious=False)[source][source]

返回型別

給定一個 SymNode,評估 sym_node.expr,並在必要時新增防護措施。

基本

evaluate_symexpr(code)[source][source]

返回型別

供 compile_fx 評估 symexprs 時使用

Union[int, float, bool]

format_guards(verbose=False)[source][source]

返回型別

格式化此 shape 環境的防護表示式,如果詳細模式開啟,則包含可選的追溯資訊

str

freeze()[source][source]

凍結此 ShapeEnv 以停止累積防護措施

凍結的 ShapeEnv 將忽略在其上生成的任何進一步的防護措施,只會發出可能導致精度問題的警告。

freeze_runtime_asserts()[source][source]

凍結此 ShapeEnv 以停止新增延遲的執行時斷言。

如果您在凍結狀態下嘗試安裝新的執行時斷言,將會報錯。這可能表明存在降級違規,或者我們靜態已知為 True 但以某種方式再次檢查時無法明確解除的情況。

get_axioms(symbols=None, compute_hint=False)[source][source]

返回型別

給定表示式中的符號,它返回包含這些符號的所有執行時斷言以及所有防護措施。如果 symbols 為 None,則返回所有執行時斷言(以及所有防護措施)。

tuple[‘sympy.logic.boolalg.Boolean’, …]

get_implications(e)[source][source]

返回型別

給定一個表示式,它返回從中得出的謂詞列表

tuple[tuple[‘sympy.logic.boolalg.Boolean’, sympy.logic.boolalg.BooleanAtom], …]

get_nontrivial_guards()[source][source]

返回型別

返回非靜態已知(即非平凡)的防護表示式列表

list[‘sympy.logic.boolalg.Boolean’]

get_pruned_guards(symints)[source][source]

返回型別

獲取防護措施列表,但進行修剪,使其僅提供引用傳入輸入中的 symints 的防護措施

list[torch._guards.ShapeGuard]

ignore_fresh_unbacked_symbols()[source][source]

返回型別

指示新分配的無後端 SymInts 正在被丟棄

Iterator[None]

檢查 sympy 符號是否符合非備份符號的命名規範

返回型別

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

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

類似於 produce_guards_verbose,但只返回非詳細的 Python 守衛表示式(不生成詳細守衛)。

返回型別

list[str]

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

預期與 evaluate_guards_expression() 一起使用。為給定的佔位符生成守衛,並返回一個字串表示式,該表示式在給定佔位符的具體值的情況下,由 evaluate_guards_expression 進行評估。

返回型別

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, langs=('python', 'verbose_python'))[source][source]

生成守衛字串列表,當在定義了所有源的張量的上下文中評估時,這些字串根據列表中的守衛是否評估為 True 來返回 True 或 False。主要由 Dynamo 使用,但也對守衛的手動測試很有幫助(參見 evaluate_guards_for_args)。

為了方便測試,允許源為一個 str 型別,在這種情況下,我們將假定它是一個 LocalSource。

simplified 允許你省略鴨子尺寸(duck sizing)、相等性以及 0/1 守衛。這在你不關心樣板守衛時對於測試非常有用,也可能對使用者輸出有幫助(但請注意;某些相等性守衛是非平凡的!如果簡化輸出也能打印出來就好了)。它是私有的,因為它不適用於正常使用。

預設情況下,以 Python 形式和帶有詳細註釋的 Python 形式(verbose)返回守衛。

返回型別

list[_ShapeGuardsHelper]

replace(expr)[source][source]

將符號替換應用於給定表示式中的任何符號。

返回型別

_SympyT

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

僅在 propagate_real_tensors 時使用;為非備份符號註冊一個值,這可以作為最後的手段來解析提示。

simplify(expr, size_oblivious=False)[source][source]

使用已知約束和替換來簡化給定表示式。

返回型別

_SympyT

size_hint(expr, *, allow_none=False)[source][source]

從我們已有的底層形狀獲取給定表示式的尺寸提示。這不會引入守衛,因此僅當你能保證你的程式碼對於任意形狀仍然有效時(例如最佳化決策)才使用此方法。

返回型別

Optional[Basic]

suppress_guards()[source][source]

用於忽略內部生成的所有守衛的上下文管理器。

返回型別

_GeneratorContextManager[None]


© 版權所有 PyTorch 貢獻者。

使用 Sphinx 和 Read the Docs 提供的主題構建。

文件

訪問 PyTorch 的全面開發者文件

檢視文件

教程

獲取針對初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源