线上AI项目实践学习笔记1

项目背景

Datawhale 联合趋动云给学习者提供免费算力,进行深度学习相关的学习,除了带学习者学习者熟悉趋动云外,还提供猫狗识别实践项目、创建聊天 GPT 和部署 stable-diffusion 的三个任务的学习资料。本笔记为任务一笔记。

学习任务

任务一:

1. 熟悉趋动云平台

2. 部署猫狗识别实践项目

3. 提交任务打卡

趋动云平台部署

按照 Datawhale 的学习资料完成部署步骤便可得到的项目空间。

首先根据 Datawhale 提供的注册链接进行,填入 用户名手机号密码注册即可,可以得到168.00 的算力点。

完成注册,部署所需要的项目环境和数据。(今天比较着急,过程中也比较顺利,所以没有过程截图,这里使用官方学习文档的截图)

第一步,点击创建项目

8df4b4087ef346eebe39ea0a60ab82d4.png

然后填入项目名称项目描述(可自主填写)

42440a2a23164bbc922554fc3b9b5d85.png

接下来在这个页面选择添加官方镜像,选择 TensorFlow 2.x 框架,可以直接按下面选择 TensorFlow 2.10.1。

5537429d30104e53a639672ea732e7dc.png

点击 确认 后,继续在页面 添加指定数据。按下方显示,在搜索框搜索 dog,便可找到需要的数据集,选择用户名为小助手的数据集(跟下方图不一样,用户名改了,但数据集大小是一样的)。

3c08a646b3e24b44bf19e7a6d515583f.png

到这里就完成了这部分创建填写了,其余无需填写,点击右下角 创建 ,系统弹出 上传代码 的提示,单击 暂不上传,项目创建成功。

进入创建好的项目页面后,点击上传代码文件即可(这里不提供,大家需要可以去支持一下官方的学习项目,这也是对原作者的努力工作的肯定),上传键如下所示

873ca9a5b9044645bf1b806300247b87.png

点击后,找到自己需要上传的文件即可。(需要注意的是官方文件是压缩包,最好下载后解压,然后直接上传要用的文件就可,上传压缩包的话,记得在终端解压)

上传后,运行右上方运行代码进入开放环境,初始化可以参考下面图片中的选项。这个项目使用B1.small就可以了,但你也可以选择B1.medium之类(我选的medium),但注意算力消耗,免费算力有限。

f1b6800c177d4c7195460715783c97f9.png

点击 确定 后,就可以了,后面系统会根据初始化开启环境,需要等待 5 到 10 分钟。环境开启运行情况可以看左下角这个地方。

cfe90b29803e4ec58e43c3273160301a.png

主要需要注意的是:

1. 镜像需要含 TensorFlow 2.x 框架 (代码使用的tensorflow框架);

2. 绑定数据集时选择公开数据集,合理利用搜索框,选择用户名为小助手的数据集。

猫狗识别项目实践

这里第一步就有一个小问题需要注意。按官方步骤的话,部署好环境后,是点击 JupyterLab 进入项目实践的,但是我这里 JupyterLab 是灰色的,不可点击,但我的环境确实部署成功的,网页终端非灰色,所以我直接尝试从 网页终端 进入了,是没有问题的。当点击 网页终端 后,旁边是有JupyterLab 窗口的(环境配置部署不出错的话),是可以直接点进去,再回到上一个页面JupyterLab 也会亮起来。

dab0c9b71f5a48b6bbb4075ac1a2120e.jpeg

进入调试环境后,可以直接在终端尝试运行导入的python文件,试试效果。运行代码如下:

python  $GEMINI_RUN/DogsVsCats.py --num_epochs 5 --data_dir $GEMINI_DATA_IN1/DogsVsCats/ --train_dir $GEMINI_DATA_OUT

在这个地方,我自己实践时不小心把 python 写成了 bash,因为上一个学习是把这一部分放可执行文件的,会更适合做调参,所以我这里也把这部分写进了 train_dogvscat.sh 文件中,首先使用vim创建空的train_dogvscat.sh 文件,直接输入

vim ./train_dogvscat.sh

进入后,点击 "i" 进入插入模型,输入

CUDA_VISIBLE_DEVICES=0 python ./DogsVsCats.py \
--num_epochs 5 \
--data_dir $GEMINI_DATA_IN1/DogsVsCats/ \
--train_dir $GEMINI_DATA_OUT

然后输入“Esc” ,再输入 “:wq" 保存并退出。之后在终端输入 bash train_dogvscat.sh 便可以运行了。

这一部分值得关注一个变量问题,比如用到的 $GEMINI_DATA_IN1 和 $GEMINI_DATA_OUT。这里显然可以直接输入目录,但变量让目录书写变得更简单,在终端打开的时候便有介绍,是一个直接关注的点。终端介绍界面如下:

e782d220465b4225a21444c686b64f41.png

成功运行代码,发现准确不高。

332cff9cd6c14999a3a6684e2424f86a.png

一方面是因为数据没有打乱,打乱代码被注释掉了,这个官方也做了说明,删掉注释符后,准确率提高到 0.833 左右。

b1b1a02c46ea45298936f68977ed6797.png

这是官方给的优化,所以这里就不做说明(可以去官方网站看看)。这里主要说明一下我自己做的调整。

优化尝试

由于我看官方代码中使用的神经网络已经比较多层了,但学习率比较大,所以我主要尝试减小学习率。值得先说的是,虽然官方前面给的训练参数传入的只有num_epochs,数据目录和输出目录,但实际上从官方代码(下图)看出,还有一些参数可输入调整,包括我上面说到的学习率。

7aaed9807397441fa61cab0aa15b49c4.png

这里学习率的 type 是我加入的,因为一开始在 train_dogvscat.sh 文件中加入这个参数的时候,一直报错(不知原因,但加入 type 后确实能运行了),修改的 bash 如下:

CUDA_VISIBLE_DEVICES=0 python ./DogsVsCats.py \
--num_epochs 20 \
--learning_rate 5e-4 \
--data_dir $GEMINI_DATA_IN1/DogsVsCats/ \
--train_dir $GEMINI_DATA_OUT

因为学习率减少了,所以我相对把 epoch 也增大了( 原来epoch也比较小 )。最终得到准确率为0.9136,显著提高,作为对比,可以看看下图学习率为 5e-3(一开始是想输5e-4,输错了)的结果,结合官方用的 0.001 的学习率,可以明显看到准确率的变化。从 0.5 到 0.8 到 0.9。

86d1454565a149689036eee27d727e31.png

学习率为 5e-3 的结果跟数据没打乱,学习率为0.001的结果差不多。

(时间原因,这次尝试不多,但跟之前的博客差不多,模型啊,参数都是可以多次尝试调优的)

后面离线训练部分来不及写啦,之后有时间补充。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值