快速入门Keras神经网络实战

安装与导入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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值