基于python类实现,手写数字识别, 三层网络【784,128,10】,损失函数softmax, epoch=200, 学习率0.01代码
时间: 2024-09-26 22:10:49 浏览: 24
在Python中,我们可以使用深度学习库如TensorFlow或Keras来实现基于卷积神经网络的手写数字识别。这里是一个使用Keras库简单示例:
```python
import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPooling2D
from tensorflow.keras.losses import CategoricalCrossentropy
from tensorflow.keras.optimizers import SGD
# 数据预处理
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(-1, 28, 28, 1) / 255.0 # 归一化到0-1之间
x_test = x_test.reshape(-1, 28, 28, 1) / 255.0
y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)
y_test = tf.keras.utils.to_categorical(y_test, num_classes=10)
# 定义三层网络模型
model = Sequential([
Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)),
MaxPooling2D(pool_size=(2, 2)),
Flatten(), # 展平成一维输入给全连接层
Dense(128, activation='relu'),
Dense(10, activation='softmax') # 输出层,使用softmax作为激活函数,对应分类数为10
])
# 编译模型
model.compile(optimizer=SGD(learning_rate=0.01),
loss=CategoricalCrossentropy(),
metrics=['accuracy'])
# 训练模型
history = model.fit(x_train, y_train,
epochs=200,
validation_split=0.1) # 使用10%的数据作为验证集
# 评估模型性能
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f"测试集精度: {test_acc}")
阅读全文