python神经网络模型实例
时间: 2023-09-09 17:07:10 浏览: 153
神经网络7种模型,如SOM、HOPFIELD、CPN、BPN、BOLTZMAN、RT、ADALINE
4星 · 用户满意度95%
下面是一个使用Python编写的神经网络模型的示例。该模型是一个基本的全连接神经网络,用于分类MNIST数据集中的手写数字。
首先,我们需要导入必要的库:
```python
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD
```
然后,我们需要加载MNIST数据集,并对其进行预处理:
```python
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# 将图像数据转换为一维向量
X_train = X_train.reshape(X_train.shape[0], X_train.shape[1] * X_train.shape[2])
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1] * X_test.shape[2])
# 将图像数据缩放到[0,1]范围内
X_train = X_train.astype('float32') / 255
X_test = X_test.astype('float32') / 255
# 将标签数据进行one-hot编码
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)
```
接下来,我们定义一个包含两个隐藏层的全连接神经网络:
```python
model = Sequential()
model.add(Dense(512, input_shape=(784,), activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(10, activation='softmax'))
```
我们使用的是ReLU激活函数和softmax输出层。我们还添加了两个Dropout层,以减少过拟合。
最后,我们定义一个优化器和损失函数,并训练模型:
```python
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=128, epochs=20, validation_data=(X_test, y_test))
```
在训练完成后,我们可以使用模型对新的手写数字数据进行分类:
```python
# 随机生成一个手写数字图像
img = np.random.rand(1, 784)
# 对图像进行预测
prediction = model.predict(img)
# 输出预测结果
print(np.argmax(prediction))
```
这是一个非常基本的神经网络模型示例,您可以根据您的需求进行修改和优化。
阅读全文