安装 Keras
pip install keras
导入 Keras
from keras.models import Sequentialfrom keras.layers import Dense, Conv2D, MaxPooling2D, Flattenfrom keras.utils import to_categoricalfrom keras.datasets import mnist
加载和准备数据
(x_train, y_train), (x_test, y_test) = mnist.load_data()# 归一化数据x_train = x_train.astype('float32') / 255x_test = x_test.astype('float32') / 255# 将标签转换为独热编码y_train = to_categorical(y_train, 10)y_test = to_categorical(y_test, 10)
创建模型
model = Sequential()model.add(Dense(512, activation='relu', input_shape=(784,)))model.add(Dense(256, activation='relu'))model.add(Dense(10, activation='softmax'))
编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
训练模型
model.fit(x_train, y_train, epochs=5, batch_size=128, validation_data=(x_test, y_test))
评估模型
score = model.evaluate(x_test, y_test, verbose=0)print('Test loss:', score[0])print('Test accuracy:', score[1])
预测
predictions = model.predict(x_test)
模型持久化
# 保存模型model.save('my_model.h5')# 加载模型from keras.models import load_modelmodel = load_model('my_model.h5')
使用卷积神经网络 (CNN)
model = Sequential()model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))model.add(MaxPooling2D((2, 2)))model.add(Flatten())model.add(Dense(128, activation='relu'))model.add(Dense(10, activation='softmax'))model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
模型调优
超参数调整:尝试不同的学习率、批量大小、优化器等。
正则化:添加 Dropout 层或使用 L1/L2 正则化来防止过拟合。
数据增强:使用 Keras 的
ImageDataGenerator
进行数据增强。
高级用法
自定义层和损失函数:根据需要创建自定义层和损失函数。
多输入/多输出模型:构建具有多个输入和/或输出的复杂模型。
模型集成:使用
keras.models.Model
类从头开始构建模型。