AutoGLuon学习笔记(一):环境配置与API初识

本文介绍了如何配置CUDA和安装AutoGluon,重点展示了在CPU环境下进行图像分类任务的步骤,包括数据集导入、模型拟合、预测、准确率测试以及模型保存。此外,还讨论了超参数优化,如模型范围设置、训练超参数和搜索策略的设定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


AutoGluon enables easy-to-use and easy-to-extend AutoML with a focus on automated stack ensembling, deep learning, and real-world applications spanning text, image, and tabular data.

AutoGluon使得机器学习简单易用且易扩展成为可能,它是基于自动的栈集成,深度学习以及跨真实世界的文本、图片、表格数据的应用


环境配置

anaconda新建一个虚拟环境autogluon_env

CUDA安装

参考博客:
ubuntu18.04安装nvidia_driver_510+cuda_11.6+cudnn_11.x
Ubuntu 18.04上安装cuda

# 查询CUDA版本号
$ nvcc -V
# 查询显卡
$ lspci | grep -i nvidia 
# 查询驱动版本和对应CUDA版本
$ nvidia-smi

我的显卡是1050TI,驱动是470,对应CUDA11.4
CUDA历史版本下载地址

Autogluon安装

官网地址:https://auto.gluon.ai/stable/index.html

# GPU版本
$ python3 -m pip install -U pip
$ python3 -m pip install -U setuptools wheel
$ python3 -m pip install -U "mxnet_cu110<2.0.0"
$ python3 -m pip install autogluon
# CPU版本
$ python3 -m pip install -U pip
$ python3 -m pip install -U setuptools wheel
$ python3 -m pip install -U "mxnet<2.0.0"
$ python3 -m pip install autogluon

目前不支持CUDA11.4,所以选择CPU版本,包含了pytorch1.10.1


图片分类

参考官方教程:Image Prediction

数据集导入和处理

加载数据集的三种方法:

  1. Load a csv file or construct your own pandas DataFrame with image and label columns
    加载CSV文件或者用图片和标签列构建自定义的pandas数据结构
  2. Load a image folder directly with ImageDataset
    用ImageDataset直接加载图片的文件夹
  3. Convert a list of images to dataset directly with ImageDataset
    用ImageDataset直接将一组图片转化成数据集

这里采用的数据集是Kaggle的Shopee-IET dataset,下载地址:Shopee-IET

使用ImageDataset加载数据集

train_dataset, _, test_dataset = ImageDataset.from_folders('https://autogluon.s3.amazonaws.com/datasets/shopee-iet.zip')
print(train_dataset)

拟合模型

创建一个预测器,设置epochs为2轮,自动进行fit

predictor = ImagePredictor()
# since the original dataset does not provide validation split, the `fit` function splits it randomly with 90/10 ratio
# you can trust the default config, we reduce the # epoch to save some build time
predictor.fit(train_dataset, hyperparameters={'epochs': 2})  

拟合结束后获取最好的一个模型,查看它的准确率

fit_result = predictor.fit_summary()
print('Top-1 train acc: %.3f, val acc: %.3f' %(fit_result['train_acc'], fit_result['valid_acc']))

预测新图片

用测试集进行预测

# 直接显示预测结果
image_path = test_dataset.iloc[0]['image']
result = predictor.predict(image_path)
print(result)
# 显示各个类别的概率
proba = predictor.predict_proba(image_path)
print(proba)

测试集准确率

计算在测试集上的准确率

test_acc = predictor.evaluate(test_dataset)
print('Top-1 test acc: %.3f' % test_acc['top1'])

保存模型

将训练好的模型文件保存下来

filename = 'predictor.ag'
predictor.save(filename)
predictor_loaded = ImagePredictor.load(filename)
# use predictor_loaded as usual
result = predictor_loaded.predict(image_path)
print(result)

超参数优化

参考官方文档:HPO

模型范围设置

对所要尝试的模型列举为一个list,限制测试范围,比如下面只测试resnet18和mobilenetv3_small

# Specify which Networks to Try
model = ag.Categorical('resnet18_v1b', 'mobilenetv3_small')
model_list = ImagePredictor.list_models()

训练超参数设置

对batch_size和学习率lr等参数进行设置

# Specify the training hyper-parameters
batch_size = 8
lr = ag.Categorical(1e-2, 1e-3)

超参数搜索策略设置

官方文档给出了使用贝叶斯优化的例子

Bayesian Optimization fits a probabilistic surrogate model to estimate the function that relates each hyperparameter configuration to the resulting performance of a model trained under this hyperparameter configuration.

# Bayesian Optimization
hyperparameters={'model': model, 'batch_size': batch_size, 'lr': lr, 'epochs': 2}
predictor = ImagePredictor()
predictor.fit(train_data, time_limit=60*10, hyperparameters=hyperparameters,
              hyperparameter_tune_kwargs={'searcher': 'bayesopt', 'num_trials': 2})
print('Top-1 val acc: %.3f' % predictor.fit_summary()['valid_acc'])

准确率测试

results = predictor.evaluate(test_data)
print('Test acc on hold-out data:', results)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值