迁移到普通字典#
当调用 .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
(在此处找到 here)。