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
数据集导入和处理
加载数据集的三种方法:
- Load a csv file or construct your own pandas DataFrame with image and label columns
加载CSV文件或者用图片和标签列构建自定义的pandas数据结构 - Load a image folder directly with ImageDataset
用ImageDataset直接加载图片的文件夹 - 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初识的主要内容,如果未能解决你的问题,请参考以下文章
nodejs学习笔记一( sublimeatom开发环境,http模块,fs模块的初识)