从 Keras 引用 BatchNormalization 错误完整解决
设备
- Mac M1 Pro
- tensorflow-macos 2.10.0
- keras 2.10.0
问题:ImportError: cannot import name ‘BatchNormalization’ from ‘keras.layers.normalization’
我将引用的命令改成了
from keras.layers.normalization.batch_normalization_v1 import BatchNormalization
但是在保存模型时爆出了以下错误
<keras.layers.normalization.batch_normalization_v1.BatchNormalization object at 0x145126190>
我便搜索了以下解决方式,将引用改成
from tensorflow.keras.layers import BatchNormalization
直接报错
解决方案
直接引用 tensorflow
import tensorflow as tf
然后将代码中每个 BatchNormalization 改成 tf.keras.layers.BatchNormalization 即可解决,且模型成功保存
model.add(Conv2D(32, (3, 3), padding="same",
input_shape=inputShape, kernel_initializer=TruncatedNormal(mean=0.0, stddev=0.01)))
model.add(Activation("relu"))
model.add(tf.keras.layers.BatchNormalization(axis=chanDim))
model.add(MaxPooling2D(pool_size=(2, 2)))