我引入了这些包
import kerasfrom keras.datasets import mnistfrom keras.models import Sequentialfrom keras.models import Modelfrom keras.layers import Dense, Dropout, Flattenfrom keras.layers import Conv2D, MaxPooling2Dfrom keras import backend as Kfrom keras.utils import np_utilsfrom keras import optimizer_v2from keras.optimizer_v2 import adam
数据被划分为训练集和测试集
(x_train, y_train), (x_test, y_test) = mnist.load_data()print(x_train.shape, y_train.shape)x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)input_shape = (28, 28, 1)# 将类向量转换为二进制类矩阵y_train = keras.utils.np_utils.to_categorical(y_train, 10)y_test = keras.utils.np_utils.to_categorical(y_test, 10)x_train = x_train.astype('float32')x_test = x_test.astype('float32')x_train /= 255x_test /= 255print('x_train shape:', x_train.shape)print(x_train.shape[0], '训练样本')print(x_test.shape[0], '测试样本')
batch_size = 128num_classes = 10epochs = 10model = Sequential()model.add(Conv2D(32, kernel_size=(5, 5),activation='relu',input_shape=input_shape))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Conv2D(64, (3, 3), activation='relu'))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Flatten())model.add(Dense(128, activation='relu'))model.add(Dropout(0.3))model.add(Dense(64, activation='relu'))model.add(Dropout(0.5))model.add(Dense(num_classes, activation='softmax'))
这是我遇到错误的地方
model.compile(loss=keras.losses.categorical_crossentropy,optimizer=keras.optimizer_v2.adam(learning_rate=0.01),metrics=['accuracy'])
---------------------------------------------------------------------------TypeError Traceback (most recent call last)<ipython-input-11-64ffa4d65c71> in <module>----> 1 model.compile(loss=keras.losses.categorical_crossentropy,optimizer=keras.optimizer_v2.adam(learning_rate=0.01),metrics=['accuracy'])TypeError: 'module' object is not callable
如何解决这个错误?
回答:
keras.optimizer_v2.adam
是一个模块。将其替换为keras.optimizer_v2.adam.Adam