当前位置:实例文章 » 其他实例» [文章]吴恩达ML2022-用于手写数字识别的神经网络

吴恩达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 文档](

其他信息

其他资源

Top