https://www.flyai.com/d/FacialAge

FLYAI  竞赛说明

  • 参加项目竞赛必须实现 model.py 中的predict_all方法,系统才能给出最终分数。

样例代码说明

app.yaml

是项目的配置文件,项目目录下必须存在这个文件,是项目运行的依赖。

processor.py

样例代码中已做简单实现,可供查考。

处理数据的输入输出文件,把通过csv文件返回的数据,处理成能让程序识别、训练的矩阵。

可以自己定义输入输出的方法名,在app.yaml中声明即可。

    def input_x(self, image_path):
       '''
  参数为csv中作为输入x的一条数据,该方法会被dataset.next_train_batch()
  和dataset.next_validation_batch()多次调用。可在该方法中做数据增强
  该方法字段与app.yaml中的input:->columns:对应
  '''
       pass

   def output_x(self, image_path):
        '''
  参数为csv中作为输入x的一条数据,该方法会被dataset.next_train_batch()
  和dataset.next_validation_batch()多次调用。
  该方法字段与app.yaml中的input:->columns:对应
  '''
       pass

   def input_y(self, label):
       '''
      参数为csv中作为输入y的一条数据,该方法会被dataset.next_train_batch()
  和dataset.next_validation_batch()多次调用。
  该方法字段与app.yaml中的output:->columns:对应
      '''
       pass

   def output_y(self, data):
       '''
      输出的结果,会被dataset.to_categorys(data)调用
      :param data: 预测返回的数据
      :return: 返回预测的标签
      '''
       pass
main.py

样例代码中已做简单实现,可供查考。

程序入口,编写算法,训练模型的文件。在该文件中实现自己的算法。

通过dataset.py中的next_batch方法获取训练和测试数据。

'''
Flyai库中的提供的数据处理方法
传入整个数据训练多少轮,每批次批大小
'''
dataset = Dataset(epochs=args.EPOCHS, batch=args.BATCH)
#获取训练数据
x_train, y_train = dataset.next_train_batch()
#获取验证数据
x_val, y_val = dataset.next_validation_batch()

通过model.py中的save_model方法保存模型

# 模型操作辅助类
model = Model(dataset)
model.save_model(YOU_NET)

如果使用PyTorch框架,需要在net.py文件中实现网络。其它用法同上。

model.py

样例代码中已做简单实现,可供查考。

训练好模型之后可以继承flyai.model.base包中的base重写下面三个方法实现模型的保存、验证和使用。

   def predict(self, **data):
       '''
      使用模型
    :param data: 模型的输入的一个或多个参数
      :return:
      '''
       pass

   def predict_all(self, datas):
       '''
      (必须实现的方法)评估模型,对训练的好的模型进行打分
    :param datas: 验证集上的随机数据,类型为list
      :return outputs: 返回调用模型评估之后的list数据
      '''
       pass

   def save_model(self, network, path=MODEL_PATH, name=MODEL_NAME, overwrite=False):
       '''
      保存模型
      :param network: 训练模型的网络
      :param path: 要保存模型的路径
      :param name: 要保存模型的名字
      :param overwrite: 是否覆盖当前模型
      :return:
      '''
       self.check(path, overwrite)
predict.py

样例代码中已做简单实现,可供查考。

对训练完成的模型使用和预测。

path.py

可以设置数据文件、模型文件的存放路径。

dataset.py

该文件在FlyAI开源库flyai.dataset包中,通过next_train_batch()next_validation_batch()方法获得x_train y_train x_val y_val数据。

FlyAI开源库可以通过pip3 install -i https://pypi.flyai.com/simple flyai 安装。


FlyaI终端命令

windows用户
客户端模式:
1. 下载项目并解压
2.进入到项目目录下,双击执行flyai.exe程序

第一次使用需要使用微信扫码登录

杀毒软件可能会误报,点击信任该程序即可

3.本地开发调试

运行flyai.exe程序,点击"本地调试"按钮,输入循环次数和数据量,点击运行即可调用main.py

如果使用本地IDE开发,需要执行安装“flyai”依赖并导入项目,运行main.py

4.下载本地测试数据

运行flyai.exe程序,点击"下载数据"按钮,程序会下载100条调试数据

4.提交训练到GPU

运行flyai.exe程序,点击"提交到GPU"按钮,输入循环次数和数据量,点击运行即可提交到GPU训练。

返回sucess状态,代表提交离线训练成功

训练结束会以微信和邮件的形式发送结果通知

命令行模式:
1. 下载项目并解压
2. 打开运行,输入cmd,打开终端

Win+R 输入cmd

3. 使用终端进入到项目的根目录下

首先进入到项目对应的磁盘中,然后执行

cd path\to\project

Windows用户使用 flyai.exe

4. 本地开发调试

执行下列命令本地安装环境并调试(第一次使用需要使用微信扫码登录)

flyai.exe test

执行test命令,会自动下载100条测试数据到项目下

安装项目所需依赖,并运行 main.py

如果使用本地IDE开发,可以自行安装 requirements.txt 中的依赖,运行 main.py 即可

5.提交训练到GPU

项目中如有新的引用,需加入到 requirements.txt 文件中

在终端下执行

flyai.exe train

返回sucess状态,代表提交离线训练成功

训练结束会以微信和邮件的形式发送结果通知

完整训练设置执行代码示例:

flyai.exe train -b=32 -e=10

通过执行训练命令,整个数据集循环10次,每次训练读取的数据量为 32 。

Mac和Linux用户
1. 下载项目并解压
2. 使用终端进入到项目的根目录下

cd /path/to/project

Mac和Linux用户使用 ./flyai 脚本文件

3. 初始化环境并登录

授权flyai脚本

chmod +x ./flyai

4. 本地开发调试

执行下列命令本地安装环境并调试(第一次使用需要使用微信扫码登录)

./flyai test 注意:命令前面不要加sudo

执行test命令,会自动下载100条测试数据到项目下

安装项目所需依赖,并运行 main.py

如果使用本地IDE开发,可以自行安装 requirements.txt 中的依赖,运行 main.py 即可

5.提交训练到GPU

项目中如有新的引用,需加入到 requirements.txt 文件中

在终端下执行

./flyai train 注意:命令前面不要加sudo

返回sucess状态,代表提交离线训练成功

训练结束会以微信和邮件的形式发送结果通知

完整训练设置执行代码示例:

./flyai train -b=32 -e=10

通过执行训练命令,整个数据集循环10次,每次训练读取的数据量为 32 。

案例:https://github.com/PengzhongSun/BirdClassification_FlyAI

FLYAI的更多相关文章

  1. from flyai.dataset import Dataset 报错

    from flyai.dataset import Dataset 报错 No module name 'flyai' ​ 先找到ide中使用的Python对应的pip的位置. ​ windows用户 ...

  2. Pycharm激活、配置以及快捷方式 | 图解

    访问flyai.club,一键创建你的人工智能项目 来源 | Python (python6359) Pycharm可以去官网下载 Pycharm的安装激活 jar包的目的就是让截获截止时间并骗过py ...

  3. 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2020.11

    公告 我们始终与所有创作者站在一起,为创作自由而战.我们还会提供一切必要的技术支持. 我们全力支持科研开源(DOCX)计划.希望大家了解这个倡议,把这个倡议与自己的兴趣点结合,做点力所能及的事情. 我 ...

  4. 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2020.9

    公告 ApacheCN 项目的最终目标:五年内备份并翻译 Github 上的所有教程(其实快被我们啃完了,剩下的不多了). 警告各位培训班:对 ApacheCN 宣传文章的举报,也将视为对 Apach ...

  5. 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2020.7

    公告 我们的群共享文件有备份到 IPFS 的计划,具体时间待定. 我们的机器学习群(915394271)正式改名为财务提升群,望悉知. 请关注我们的公众号"ApacheCN",回复 ...

  6. 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2020.6

    公告 我们的群共享文件有备份到 IPFS 的计划,具体时间待定. 我们的机器学习群(915394271)正式改名为财务提升群,望悉知. 请关注我们的公众号"ApacheCN",回复 ...

  7. 布客·ApacheCN 编程/大数据/数据科学/人工智能学习资源 2020.2

    特约赞助商 公告 我们愿意普及区块链技术,但前提是互利互惠.我们有大量技术类学习资源,也有大量的人需要这些资源.如果能借助区块链技术存储和分发,我们就能将它们普及给我们的受众. 我们正在招募项目负责人 ...

  8. 布客·ApacheCN 翻译/校对/笔记整理活动进度公告 2020.1

    注意 请贡献者查看参与方式,然后直接在 ISSUE 中认领. 翻译/校对三个文档就可以申请当负责人,我们会把你拉进合伙人群.翻译/校对五个文档的贡献者,可以申请实习证明. 请私聊片刻(52981514 ...

  9. 布客·ApacheCN 编程/大数据/数据科学/人工智能学习资源 2020.1

    公告 我们正在招募项目负责人,完成三次贡献可以申请,请联系片刻(529815144).几十个项目等你来申请和参与,不装逼的朋友,我们都不想认识. 薅资本主义羊毛的 CDNDrive 计划正式启动! 我 ...

随机推荐

  1. 四、DDL常见操作汇总

    DDL: Data Define Language 数据定义语言,主要用来对数据库.表进行一些管理操作.如:建库.删库.建表.修改表.删除表.对列的增删改等. 一.库的管理 1.创建库 create ...

  2. Innodb学习

    一.并发控制 为什么要进行并发控制? 因为并发的任务会对同一个临界资源进行操作,如果不进行并发控制,可能导致不一致,故必须进行并发控制. 如何进行并发控制? 1.锁. 2.数据多版本. 施工ing.. ...

  3. Python函数Day1

    一.函数的初识 函数的定义:函数最主要的目的是封装一个功能,一个函数就是一个功能 定义函数的格式: def 函数名(): 函数体 def my_len(): count = 0 s1 = 'hahah ...

  4. RHEL/CentOS/Fedora各种源(EPEL、Remi、RPMForge、RPMFusion)

    参考:RHEL/CentOS/Fedora各种源(EPEL.Remi.RPMForge.RPMFusion)配置 简介 CentOS 默认自带 CentOS-Base.repo 源, 但官方源中去除了 ...

  5. springboot知识点【笔记】

    # **一.**Spring Boot 入门 ## 1.Spring Boot 简介 > 简化Spring应用开发的一个框架:>> 整个Spring技术栈的一个大整合:>> ...

  6. cuda实现向量相加

    cuda实现向量相加 博客最后附上整体代码 如果有说的不对的地方还请前辈指出, 因为cuda真的接触没几天 一些总结(建议看) cuda 并不纯GPU在运行程序, 而是 cpu 与 gpu 一起在运行 ...

  7. webpack 配置react脚手架(二):热更新

    下面继续配置 webpack dev server    hot module replacement: 首先配置dev-server     安装     npm i webpack-dev-ser ...

  8. vue 监听子组件事件及组件上使用v-model

  9. Selenium常用API的使用java语言之5-selenium元素定位

    1.selenium定位方法 Selenium提供了8种定位方式. id name class name tag name link text partial link text xpath css ...

  10. LOJ2823 三个朋友 ——查询字串的哈希值

    概念 查询字串的hash值 我们所说的哈希通常都是进制哈希,因为它具有一些很方便的性质,例如,具有和前缀和类似的性质. 假设一个字符串的前缀哈希值记为 $h[i]$,进制为 $base$,那么显然 $ ...