问题描述
尝试训练如下定义的稳健的CNN模型:
from keras.datasets import cifar10
from keras.utils import np_utils
from keras import metrics
from keras.models import Sequential
from keras.layers import Dense,Flatten,Conv2D,MaxPooling2D,LSTM,merge
from keras.layers import Batchnormalization
from keras import metrics
from keras.losses import categorical_crossentropy
from keras.optimizers import SGD
import pickle
import matplotlib.pyplot as plt
import numpy as np
from keras.preprocessing.image import ImageDataGenerator
from keras import layers
from keras.callbacks import EarlyStopping
def Robust_CNN():
model = Sequential()
model.add(Conv2D(256,(3,3),activation='relu',padding='same',init='glorot_uniform',input_shape=(2,128,1)))
model.add(Batchnormalization())
model.add(MaxPooling2D(pool_size=(1,2),padding='valid',data_format=None))
model.add(layers.Dropout(.3))
model.add(Conv2D(128,padding='same'))
model.add(Batchnormalization())
model.add(MaxPooling2D(pool_size=(1,data_format=None))
model.add(layers.Dropout(.3))
model.add(Conv2D(64,data_format=None))
model.add(layers.Dropout(.3))
model.add(Flatten())
model.add(Dense(128,init='he_normal'))
model.add(Batchnormalization())
model.add(Dense(11,activation='softmax',init='he_normal'))
return model
但是,当尝试这样做时,我收到一个NameError,提示未定义名称“ Batchnormalization” 。完整的错误消息如下:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-11-8084d29438f8> in <module>
55 # >>>>>>>>>>>>>>>>>>>>> choose a model by un-commenting only one of the three <<<<<<<<<<<<<<<<<<<<<<<<<<<
56 #xx_shape = (2,1)
---> 57 models = Robust_CNN()
58 #models = CLDNN()
59 #models = resnet(xx_shape)
~\AppData\Local\Programs\Python\python37\Scripts\FYP\Optimizing-Modulation-Classification-with-Deep-Learning-master\Optimizing-Modulation-Classification-with-Deep-Learning-master\Robust_CNN Model\model.py in Robust_CNN()
19 def Robust_CNN():
20
---> 21 model = Sequential()
22 model.add(Conv2D(256,1)))
23 model.add(Batchnormalization())
NameError: name 'Batchnormalization' is not defined
即使我已经导入了Batchnormalization,似乎也无法弄清楚为什么会这样。
解决方法
首先从 tensorflow.keras.layers 导入 BatchNormalization,然后运行你的代码
从 tensorflow.keras.layers 导入 BatchNormalization