瑞萨单片机AI教程【十二】变压器油温预测模型
开发板官网(www.edevkit.com)
变压器油温预测模型
下载训练数据
数据集下载地址:
https://github.com/zhouhaoyi/ETDataset
数据集收集了两个地方的变压器从2016年7月到2018年7月的变压器数据,包括每分钟和每小时的数据。数据包括"date", "HUFL", "HULL", "MUFL", "MULL", "LUFL", "LULL" and "OT",日期,负载和OT油温数据。
数据说明
下载解压,打开文件夹。
打开“ETT-small”文件夹,存放的数据文件,“ETTh1”,“ETTh2”是两个地方变压器的小时数据,“ETTm1”,“ETTm2”是两个地方的分钟数据。
分钟的数据量较大,使用小时数据比较合适训练,每天24个数据,打开“ETTh1.csv”,查看文件。
date:时间戳(格式 YYYY/M/D H:MM)
HUFL:High UseFul Load(高有用负荷)
HULL:High UseLess Load(高无用负荷)
MUFL:Middle UseFul Load(中有用负荷)
MULL:Middle UseLess Load(中无用负荷)
LUFL:Low UseFul Load(低有用负荷)
LULL:Low UseLess Load(低无用负荷)
OT:Oil Temperature(油温)
预测OT油温数据和预测电池容量一样,用前一组的数据预测下一个油温数据。油温数据也需要加入到训练,把OT列数据复制一列命名“next_ot”,整体上移一个数据,当前数据就指向下一个油温数据。
第一列“date”时间不需要参与训练,把第一列删除。
如上图,训练的窗口值设置为1,输入当前的负载和OT数据预测下一个小时油温值,这样输入数据就有7个通道,“next_ot”作为目标列。
导入文件
进入“Reality AI Tools”新建一个“ETT”工程。
进入“Data”->“Source”->“External Data”导入外部文件,选择上面处理过的“ETTh1.csv”文件。
导入完成,配置文件,在最后一列“next_ot”列选择“Target Value”设置为目标列。采样率1hz。
模型训练
导入完成,开始准备数据集和采样列表。
进入“Data”->“Curate”数据整理页面,在“Project Files”看到上传的文件。
如果看到文件前面有红色报错,鼠标悬停查看信息,提示说数据损坏,查看数据列是否只包含数值数据,说明文件里有字符串的内容。训练数据只能是数值类数据。
打开文件查看是否“date”列没删除,时间是字符串,然后在“Source”里删除文件重新上传。
上传文件无误后,看到右侧“Target Value”识别为“next_OT”列,数据“from Data file”来自文件。说明文件目标列识别正确,可以创建数据集。
勾选文件,点击“Add to Data Set”创建数据集。
进入“Data Sets”页面,点开创建的数据集。
“Data Channels”显示当前的数据通道,有7个,Ch1~Ch7对应之后生成代码的输入数据格式。
右侧显示了当前文件里的目标值数值范围区间,6.04~15.95之间的数据较多。
勾选所有通道,点击“Create Sample List”创建“Single List”采样列表。
“Target Reduction Method”选择“mean”平均值,根据设置窗口值做一个平均值。比如,窗口值设置8,训练时会把8组数据做一个平均值参与训练。
这里窗口值和偏移都设置为1,当前一组数据预测下一次油温数据。
点击“Submit”创建采样列表。
进入“Sample lists”页面,查看创建的采样列表。
需要注意的是,查看“Data Shape”是否正确,比如当前ETT数据有7个通道值,窗口值是1,“Data Shape”就是7x1才是正确的,如果看到是6x1就不正确,输入通道变成了6个和实际不符。需要删除,重新创建。
如果经常错误,需要刷新网页重新登录。
进入“AI Explore”->“Values and RUL”,选择创建的采样列表。
点击“Start Explore”开始训练模型。
等待训练完成。
选择第一个模型,点击“Create Base Tool”准备生成代码。
进入“Deploy”->“embedded”选择要生成的模型,点击“New package”,配置参数后,点击“Generate Package”开始生成。
等待生成完成。
模型使用
生成的代码通过网页下载或者直接在工程中下载,放入到“src/”目录下。
准备测试数据
测试数据从“ETTh1.csv”截取一段,比如取7/8的数据和前一条数据
1+24条数据逐条滚动预测7/8一天的数据。同理再取8/8的1+24条数据,准备两段数据。
整理数据
数据需要把7列数据整理成数组方便代码使用,用data[7][1+24]的二维数组接收。
按顺序把每列的数据复制出来在编辑器上用“,”组成数组。
然后复制到代码的数组里。
修改测试代码
打开“example.c”,添加测试代码,按照ch0[0]~ch0[n], ch1[0]~ch1[n]的通道顺序取测试数据组成输入数组。逐条预测出24个油温数据。
查看结果
编译下载运行,打开串口助手查看。
第一组预测数据:
第二组预测数据:
