移轉到常规的詞典#
當呼叫 .init
、 .init_with_output
和 .apply
Module
方法時,Flax 將從回傳 FrozenDicts
遷移為一般字典。
原始議題在此 處說明。
本指南顯示一些常見的升級模式。
工具函式#
FrozenDicts
是不可變字典,此字典實作了其他 4 個方法
為了配合一般字典的變更,請將 FrozenDict
方法的使用替換成 flax.core.frozen_dict
的工具函式等效項。這些工具函式模仿其對應 FrozenDict
方法的行為,且可以在 FrozenDicts
或一般字典中呼叫。以下是工具函式和範例升級模式
copy
#
variables = variables.copy(add_or_replace={'other_variables': other_variables})
variables = flax.core.copy(variables, add_or_replace={'other_variables': other_variables})
pretty_repr
#
str_repr = variables.pretty_repr()
str_repr = flax.core.pretty_repr(variables)
修改設定值#
設定暫時功能旗標 flax_return_frozendict
以協助執行遷移。如要在執行期間切換傳回 FrozenDict 與常規字典變數的行為,請在程式碼中執行 flax.config.update('flax_return_frozendict', <BOOLEAN_VALUE>)
。
例如
x = jnp.empty((1,3))
flax.config.update('flax_return_frozendict', True) # set Flax to return FrozenDicts
variables = nn.Dense(5).init(jax.random.key(0), x)
assert isinstance(variables, flax.core.FrozenDict)
flax.config.update('flax_return_frozendict', False) # set Flax to return regular dicts
variables = nn.Dense(5).init(jax.random.key(0), x)
assert isinstance(variables, dict)
或者,可直接修改 Flax 原始碼中的環境變數 flax_return_frozendict
(請參閱此處)