用Keras实现bp神经网络模型学习,显示训练结果,并保存模型
时间: 2024-02-12 11:09:11 浏览: 156
python实现BP神经网络回归预测模型.rar
下面是一个使用Keras实现BP神经网络模型学习的示例代码,包括训练模型、显示训练结果和保存模型:
```python
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
import numpy as np
# 构建一个简单的BP神经网络模型
model = Sequential()
model.add(Dense(units=10, input_dim=2, activation='relu'))
model.add(Dense(units=1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer=SGD(lr=0.1), metrics=['accuracy'])
print(model.summary())
# 生成训练数据
X = np.random.rand(1000, 2)
y = np.array([int(x1+x2>1) for x1,x2 in X])
# 训练模型
history = model.fit(X, y, epochs=50, 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', 'test'], loc='upper left')
plt.show()
# 保存模型
model.save('my_model.h5')
```
在这个示例中,我们首先使用Keras的Sequential模型构建了一个简单的BP神经网络模型,包含一个10个神经元的隐层和一个输出为1个神经元的输出层。然后,我们编译模型并打印模型的摘要信息。
接下来,我们生成了1000个随机的2维数据作为训练数据,并使用生成的数据训练了模型。在训练过程中,我们设置了50个epochs,每批次32个样本,验证集占训练集的20%。
在训练完成后,我们使用matplotlib库绘制了训练结果图表,并保存了模型。最后,我们可以使用 `model.load_weights('my_model.h5')` 加载保存的模型权重,并使用该模型进行预测。
阅读全文