tf.keras批量归一化报错之 Layer ModuleWrapper has arguments in `__init__` and therefore must override `get_co

我们使用tf.keras进行摸模型搭建时,一般使用如下操作进行批量归一化


from keras.layers.normalization import BatchNormalization

但是训练的过程中会报错如下:

tf.keras批量归一化报错之 Layer ModuleWrapper has arguments in `__init__` and therefore must override `get_co_第1张图片

这是因为我们混用了tf和keras(注意是keras,而不是tf.keras)。

而如果我们换成了(tf较低版本可以使用):

from tensorflow.contrib.layers.python.layers import batch_norm 

 mModel.add(tf.keras.layers.batch_norm())

则就会报错为:

ModuleNotFoundError: No module named 'tensorflow.contrib'

这是因为我们的tf的版本过高了,网上一般建议回退版本。当然也有其它复杂的。但是的但是,

我们只需将其换为:
   mModel.add(tf.keras.layers.BatchNormalization())

就行了,就行了啊。

额外说一句,针对tf的大多数低版本有的,而高版本导入报错的情况,都只需要更改其路径即可。如果不知道具体路径,就去官网、百度上查找。实在不行,我们可以用dir(tf.keras.layers)的方式自己一级一级的去寻找嘛。

你可能感兴趣的:(keras,python,深度学习)