吴恩达ML2022-用于手写数字识别的神经网络
发布人:shili8
发布时间:2024-12-22 10:17
阅读次数:0
**吴恩达 ML2022 - 用于手写数字识别的神经网络**
在本文中,我们将使用吴恩达的机器学习课程(ML2022)中的数据集,训练一个用于手写数字识别的神经网络。这个任务是典型的分类问题,我们需要预测给定的图像属于哪个数字。
**数据准备**
首先,我们需要下载并安装所需的库:
!pip install -U tensorflow numpy matplotlib
然后,我们可以使用 TensorFlow 的 `tf.keras` API 来加载 MNIST 数据集:
import tensorflow as tf# 加载 MNIST 数据集mnist = tf.keras.datasets.mnist.load_data() # 将数据分为训练和测试集train_images, train_labels = mnist[0] test_images, test_labels = mnist[1] # 归一化图像train_images = train_images /255.0test_images = test_images /255.0# 转换为 TensorFlow 张量train_images = tf.convert_to_tensor(train_images) test_images = tf.convert_to_tensor(test_images) # 将标签转换为整数类型train_labels = tf.cast(train_labels, tf.int32) test_labels = tf.cast(test_labels, tf.int32)
**神经网络架构**
我们将使用一个简单的神经网络架构,包含两个全连接层和一个输出层。每个全连接层都有128 个神经元。
# 定义神经网络模型model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28,28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ])
**编译模型**
我们需要编译模型,指定损失函数、优化器和评估指标。
# 编译模型model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
**训练模型**
现在,我们可以开始训练模型了。我们将使用128 个批次,学习率为0.001。
# 训练模型model.fit(train_images, train_labels, epochs=10, batch_size=128, validation_data=(test_images, test_labels))
**评估模型**
最后,我们可以评估模型的性能。我们将使用测试集来评估模型的准确率。
#评估模型test_loss, test_acc = model.evaluate(test_images, test_labels) print(f'Test accuracy: {test_acc:.2f}')
**预测**
最后,我们可以使用模型进行预测。我们将给定一个图像,模型会输出预测的数字。
# 预测predictions = model.predict(test_images[:10]) print(predictions)
这就是本文的全部内容。在本文中,我们使用吴恩达的机器学习课程(ML2022)中的数据集,训练了一个用于手写数字识别的神经网络。我们首先准备数据,然后定义神经网络架构,编译模型,训练模型,评估模型,并最后进行预测。
**参考**
* [吴恩达机器学习课程(ML2022)]( />* [TensorFlow 文档](