返回
斯坦福深度学习实战入门:Assignment 1 指南
人工智能
2023-10-12 16:48:58
准备环境
课程提供了两种实验方式:Google 云服务器和本地运行。强烈推荐本地运行,因为这样可以更好地控制实验过程。
本地运行需要安装 Python 3.6 或更高版本、NumPy、SciPy、Matplotlib、TensorFlow、Keras 等库。具体安装步骤可参考官方文档或网上教程。
数据预处理
Assignment 1 使用 CIFAR-10 数据集,包含 60,000 张 32x32 像素的彩色图像,分为 10 个类别。我们将使用 TensorFlow 的 tf.keras.datasets
模块加载和预处理数据。
from tensorflow.keras.datasets import cifar10
# 加载数据集
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
# 归一化像素值
x_train, x_test = x_train / 255.0, x_test / 255.0
# 将标签转换为 one-hot 向量
y_train, y_test = tf.one_hot(y_train, 10), tf.one_hot(y_test, 10)
模型训练
我们将使用卷积神经网络 (CNN) 模型进行图像分类。CNN 由一系列卷积层、池化层和全连接层组成。
以下是 CNN 模型的简化结构:
Conv2D -> MaxPooling2D -> Conv2D -> MaxPooling2D -> Flatten -> Dense -> Dense
你可以使用 TensorFlow 或 Keras 等框架构建 CNN 模型。以下是一个示例代码:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
# 创建 CNN 模型
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
MaxPooling2D((2, 2)),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D((2, 2)),
Flatten(),
Dense(128, activation='relu'),
Dense(10, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))
结果评估
训练完成后,我们需要评估模型的性能。我们可以使用以下指标:
- 准确率: 模型正确分类图像的比例。
- 损失函数值: 模型预测值与真实值之间的差异,越小越好。
以下是一个评估模型结果的示例代码:
# 评估模型
loss, accuracy = model.evaluate(x_test, y_test)
# 打印评估结果
print('准确率:{:.4f}'.format(accuracy))
print('损失函数值:{:.4f}'.format(loss))
结论
恭喜你完成了斯坦福深度学习课程 CS231n 的 Assignment 1!通过动手实践,你现在已经掌握了深度学习实战的基本流程,包括环境搭建、数据预处理、模型训练和结果评估。继续努力,探索深度学习的更多奥秘!