### 如何在 AutoDL 上使用公开数据集
#### 准备工作
无论是 Colab 还是 AutoDL,其底层操作系统均为 Linux[^1]。因此,在处理公开数据集时,需要熟悉基本的 Linux 命令以及 Python 编程环境。
---
#### 数据集获取方法
对于公开数据集的获取,可以采用 Kaggle 提供的方式,即通过直接下载或者利用 Kaggle API 下载数据集[^2]。以下是具体的操作流程:
##### 方法一:直接下载数据集
如果目标数据集允许直接下载,则可以通过浏览器访问对应的链接并手动下载文件到本地计算机后再上传至 AutoDL 的存储空间中。
##### 方法二:Kaggle API 获取数据集
为了更高效地管理数据集,推荐使用 Kaggle API 来完成自动化下载过程。以下是安装和配置步骤:
1. 安装 `kaggle` 库:
```bash
pip install kaggle
```
2. 配置 API 密钥(需提前登录 Kaggle 并生成 token 文件):
将下载得到的 `kaggle.json` 放入指定路径 `/root/.kaggle/kaggle.json` 或者运行以下命令设置环境变量:
```bash
export KAGGLE_CONFIG_DIR=/path/to/your/config/dir
```
3. 使用 CLI 工具下载所需的数据集:
```bash
kaggle datasets download -d username/dataset-name
```
4. 解压压缩包并将解压后的文件移动到项目目录下以便后续加载:
```bash
unzip dataset.zip -d /workspace/data/
rm dataset.zip
```
---
#### 示例代码展示
假设已经成功将 MNIST 手写数字识别数据集导入到了 AutoDL 中的工作区 `/workspace/data/mnist` 路径下,下面是一个简单的 TensorFlow 实现模型训练的例子:
```python
import tensorflow as tf
from tensorflow.keras import layers, models
# 加载MNIST数据集
def load_data(data_dir='/workspace/data/mnist'):
mnist = tf.keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data(path=f'{data_dir}/mnist.npz')
# 归一化像素值范围为 [0, 1]
train_images = train_images[..., None].astype('float32') / 255.
test_images = test_images[..., None].astype('float32') / 255.
return (train_images, train_labels), (test_images, test_labels)
(train_images, train_labels), (test_images, test_labels) = load_data()
# 构建卷积神经网络(CNN)
model = models.Sequential([
layers.Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(10, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
metrics=['accuracy'])
# 训练模型
history = model.fit(train_images,
train_labels,
epochs=5,
validation_split=0.1)
# 测试模型性能
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f'\nTest accuracy: {test_acc}')
```
上述脚本定义了一个基础 CNN 结构用于分类任务,并完成了从加载数据到评估测试集表现的一系列操作。
---
#### 租赁显卡与启动终端
当租赁好 GPU 显卡资源之后,可通过点击界面中的 **“Terminal”** 图标来开启远程 SSH 终端会话窗口。在此处执行前述提到的各种 shell 指令即可顺利完成整个实验周期内的各项准备工作。
---