AttributeError:模块“tensorflow.python.training.experimental.mixed_ precision”没有属性“_register_wrapper_optimizer_cls”

yks*_*ki9 9 python python-3.x deep-learning keras tensorflow2.0

我正在使用 Keras 来实现神经网络。但是当我使用时model = Sequential(),我收到以下错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-31-fa9fd3b0e211> in <module>
      8 
      9 # Create the model
---> 10 model = Sequential()
     11 model.add(Dropout(0.1), input_shape=(128,))
     12 model.add(Dense(256, activation='relu', kernel_initializer='he_uniform'))

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/utils/version_utils.py in __new__(cls, *args, **kwargs)
     55     use_v2 = should_use_v2()
     56     cls = swap_class(cls, training.Model, training_v1.Model, use_v2)  # pylint: disable=self-cls-assignment
---> 57     return super(ModelVersionSelector, cls).__new__(cls)
     58 
     59 

/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/lazy_loader.py in __getattr__(self, item)
     60 
     61   def __getattr__(self, item):
---> 62     module = self._load()
     63     return getattr(module, item)
     64 

/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/lazy_loader.py in _load(self)
     43     """Load the module and insert it into the parent's globals."""
     44     # Import the target module and insert it into the parent's namespace
---> 45     module = importlib.import_module(self.__name__)
     46     self._parent_module_globals[self._local_name] = module
     47 

/usr/lib/python3.6/importlib/__init__.py in import_module(name, package)
    124                 break
    125             level += 1
--> 126     return _bootstrap._gcd_import(name[level:], package, level)
    127 
    128 

/usr/lib/python3.6/importlib/_bootstrap.py in _gcd_import(name, package, level)

/usr/lib/python3.6/importlib/_bootstrap.py in _find_and_load(name, import_)

/usr/lib/python3.6/importlib/_bootstrap.py in _find_and_load_unlocked(name, import_)

/usr/lib/python3.6/importlib/_bootstrap.py in _load_unlocked(spec)

/usr/lib/python3.6/importlib/_bootstrap_external.py in exec_module(self, module)

/usr/lib/python3.6/importlib/_bootstrap.py in _call_with_frames_removed(f, *args, **kwds)

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer_v1.py in <module>
     48 from tensorflow.python.keras.engine import input_spec
     49 from tensorflow.python.keras.mixed_precision import autocast_variable
---> 50 from tensorflow.python.keras.mixed_precision import loss_scale_optimizer
     51 from tensorflow.python.keras.mixed_precision import policy
     52 from tensorflow.python.keras.saving.saved_model import layer_serialization

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/mixed_precision/loss_scale_optimizer.py in <module>
   1152 
   1153 # pylint: disable=protected-access
-> 1154 mixed_precision._register_wrapper_optimizer_cls(optimizer_v2.OptimizerV2,
   1155                                                 LossScaleOptimizerV1)
   1156 

AttributeError: module 'tensorflow.python.training.experimental.mixed_precision' has no attribute '_register_wrapper_optimizer_cls'
Run Code Online (Sandbox Code Playgroud)

我对深度学习比较陌生。任何帮助,将不胜感激。谢谢你!

Wil*_*Mou 15

这个问题可能出现在keras包版本中。

因为安装的tensorflow版本与keras版本不匹配。只需卸载keras并重新安装自己的tensorflow对应版本即可。

pip3 uninstall keras
pip3 install keras --upgrade
Run Code Online (Sandbox Code Playgroud)

总之,您需要为您的 Keras 代码匹配正确的环境版本。


Fel*_*cio 11

我已经进行了很多搜索,只需运行我在此源 Github tf issues中找到的以下命令即可解决此问题:

    pip3 install tf-nightly
Run Code Online (Sandbox Code Playgroud)

正如其他答案,这是一个兼容版本问题

我在本地机器中遇到导入问题,例如:

    from tensorflow.keras import layers
    from tensorflow.keras import Input
Run Code Online (Sandbox Code Playgroud)

但现在我可以毫无问题地导入了。


小智 7

我有同样的问题。问题是 Keras 的安装与 Tensorflow 不兼容,因此其中没有属性/方法。我尝试了源中提到的以下命令 ,我的问题完全解决了。

pip3 uninstall keras
pip3 install keras --upgrade
Run Code Online (Sandbox Code Playgroud)


小智 7

这是一个糟糕的解决方案,但为了让事情顺利进行,我是这样解决的。

我进入我的目录并找到tensorflow.python.training.experimental.mixed_ precision.py的位置,并手动插入以下行

def _register_wrapper_optimizer_cls(optimizer_cls, wrapper_optimizer_cls):
  _REGISTERED_WRAPPER_OPTIMIZER_CLS[optimizer_cls] = wrapper_optimizer_cls
Run Code Online (Sandbox Code Playgroud)

代码来自官方GitHub https://github.com/sourcecode369/tensorflow-1/blob/master/tensorflow/python/training/experimental/mixed_ precision.py

  • 我宁愿投票(已经投票了!),因为根据我的经验和观点,在紧急期限内,快速而肮脏的解决方案比成熟的解决方案更能挽救生命。此外,回答者还给出了免责声明,称这是一个糟糕的解决方案,因此应自行承担使用风险;-) (5认同)