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

Posted Sakurazzy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AutoGLuon学习笔记:环境配置与API初识相关的知识,希望对你有一定的参考价值。

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


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)

以上是关于AutoGLuon学习笔记:环境配置与API初识的主要内容,如果未能解决你的问题,请参考以下文章

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

AutoGluon GPU 版本 安装配置教程

AutoGluon GPU 版本 安装配置教程

nodejs学习笔记一( sublimeatom开发环境,http模块,fs模块的初识)

学习笔记Kafka—— Kafka 开发环境配置及Producer API

学习笔记Kafka—— Kafka 开发环境配置及Producer API