安装与导入Keras
确保已安装TensorFlow和Keras。可以通过以下命令安装:
pip install tensorflow keras
导入必要的库:
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
准备数据集
使用简单的合成数据作为示例。这里生成一个二分类问题的数据集:
# 生成随机数据
np.random.seed(42)
X = np.random.rand(1000, 20)
y = np.random.randint(2, size=(1000, 1))
构建神经网络模型
创建一个简单的全连接神经网络:
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=20))
model.add(Dense(32, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
编译模型
配置模型的优化器、损失函数和评估指标:
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
训练模型
使用生成的训练数据进行模型训练:
history = model.fit(X, y, epochs=10, batch_size=32, validation_split=0.2)
评估模型性能
查看模型在训练集和验证集上的表现:
import matplotlib.pyplot as plt
plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.title('Model accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Validation'], loc='upper left')
plt.show()
进行预测
使用训练好的模型进行新数据预测:
new_data = np.random.rand(5, 20)
predictions = model.predict(new_data)
print(predictions)
模型保存与加载
将训练好的模型保存到文件:
model.save('my_first_model.h5')
加载保存的模型:
from keras.models import load_model
loaded_model = load_model('my_first_model.h5')
调整模型架构
尝试添加更多层或改变激活函数:
model = Sequential()
model.add(Dense(128, activation='relu', input_dim=20))
model.add(Dense(64, activation='relu'))
model.add(Dense(32, activation='tanh'))
model.add(Dense(1, activation='sigmoid'))
使用回调函数
添加EarlyStopping和ModelCheckpoint回调:
from keras.callbacks import EarlyStopping, ModelCheckpoint
callbacks = [
EarlyStopping(monitor='val_loss', patience=3),
ModelCheckpoint(filepath='best_model.h5', monitor='val_loss', save_best_only=True)
]
model.fit(X, y, epochs=50, batch_size=32, validation_split=0.2, callbacks=callbacks)
处理真实数据集
使用Keras内置的MNIST数据集示例:
from keras.datasets import mnist
from keras.utils import to_categorical
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape(60000, 784).astype('float32') / 255
X_test = X_test.reshape(10000, 784).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='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(X_train, y_train, epochs=5, batch_size=128, validation_split=0.2)

1万+

被折叠的 条评论
为什么被折叠?



