我们还是避免复杂的叙述,直接利用 MixIOT AI 应用创建AI项目来介绍和讲解:
上面的截图,是 MixIOT AI 创建项目所需要配置的所有项,我们逐项来梳理。
【A】:项目名称与别名,跟其他的应用 一样,每个AI项目都要有名字和别名。
【B】:把该项目需要备注的内容,可以填写到描述字段,以备日后查阅。
【C】:模型文件,是AI 项目的核心内容。
MixIOT AI 支持文件格式为 HDF5 格式(.h5)的模型文件,这里使用的模型文件,需要保存和加载整个模型,包括模型的结构、权重等。每个 AI项目,都需要有各自的模型文件。
要训练并获得 HDF5格式(.h5)的模型文件,可以使用一些流行的深度学习库,其中最著名和广泛使用的是 Keras 和 TensorFlow。这两个库都提供了原生支持来保存和加载 HDF5 格式的模型文件。以下是使用这些工具的简要说明:
Keras
Keras 是一个高层神经网络 API,它可以运行在 TensorFlow、CNTK 或 Theano之上。 Keras 简化了模型的构建过程,使得创建深度学习模型变得更加直观和快捷。在 Keras中,可以通过几行代码训练模型,并使用 model.save (filepath) 方法将整个模型保存为一个 HDF5 文件。这个文件将包括:
- 模型的结构
- 模型的权重
- 训练配置(包括优化器)
- 优化器的状态
以下是一个简单的例子:
TensorFlow
TensorFlow 是一个更为底层的库,提供了更多的控制和灵活性。自从2.0版本以来,TensorFlow 和 Keras 更加紧密地集成在一起,提供了一个统一的接口来构建和训练模型。在 TensorFlow 中,使用 Keras API 构建的模型同样可以被保存为 HDF5格式。保存和加载的方式与纯Keras 库几乎一样:
这些库提供了丰富的文档和社区支持,使得训练和保存HDF5格式的模型变得相对简单。选择哪一个工具主要取决于具体需求和使用者熟悉什么。
【D】关联对象,就是AI项目的对象,只需要进行选择。
【E】这里的脚本,实际上就是输入变量标识,也就是对象变量的列表,格式是:
[ "FV1 ", "FV2 ", "FV3 ", ...... , "FVm " ]
这也就是数据输入的张量。
【F】数据周期和计算频次,是我们都熟悉的内容。计算频次是多少时间计算一次,而数据周期是每次计算使用多长时间的数据。
除了这两个配置项需要设置,还有一项也需要设置,就是 “最大数据条数”。这是一个最大限定值,也就是说,每次计算的时候,无论数据周期里面有多少条数据,每次使用的数据都不会超过这个限定。
举个具体的例子,如果我们设置的是这样的:“计算频次”= 60次/小时,“数据周期” =5分钟,“最大数据条数”=200。这个设置的解读是,这个AI计算是1分钟一次,每次计算都是用到最近5分钟的数据,如果这最近5分钟数据周期不超过200,那么,这5分钟的数据会被全部使用,有多少算多少;如果这5分钟的数据超过200条,则每次计算只使用最后的200条数据。
【G】“降采样” 和 “采样时间间隔”,分别是对输入的数据张量数据进行降低频率的数据采样方式,以及采样的时间间隔。
我们在F部分说明了输入数据的张量,也就是说,输入的是对象的哪些变量在多长时间段的数据。这个输入的数据也许量很大,也许数据本身有问题,也许数据的时序间隔不规律等等,可能会有各种问题。
数据降采样(Downsampling)实际上就是减少这些原始数据量的过程,它通过减小数据集中的样本数量来实现,从原本大量数据中选择一个代表性子集,或者对数据进行处理以降低其时间或空间分辨率。
之所以在 MixIOT AI 应用输入的数据使用降采样的原因在于:
- 提高性能:处理大量数据可能会导致计算资源不足、处理时间过长等问题。降采样可以将数据缩减到一个更易于管理的尺寸,从而加快处理速度和提高计算效率;
- 减小存储需求:大的数据集需要更多的存储空间。通过降采样,数据的存储占用可以变得更小,同时也减少了数据传输过程中可能产生的成本和时间延迟;
- 消除冗余:高采样率可能产生大量冗余数据,数据点之间的差异可能微乎其微。降采样可以帮助移除这种冗余,使分析更加集中于数据的关键变化部分;
- 提高数据分析质量:在某些情况下,高分辨率的数据可能会掩盖主要的趋势和模式。降采样可以帮助揭示这些更为广泛的趋势,使数据分析更加简洁明了;
- 平衡类别分布:在机器学习中,如果一个数据集中类别分布不平衡,会影响模型的性能。通过对多数类别进行降采样可以减少数据不平衡的问题,从而提高模型的泛化能力;
- 满足特定的数据需求:某些应用可能需要特定时间或空间分辨率的数据。例如,在气候模型中可能需要规定时间频率的数据,过密的数据不仅无用而且可能引入噪声。
降采样的方式可以根据实际需要来选择:
【H】随机种子,这是一个可选输入项。MixIOT AI需要做大量的数据模拟,这些模拟都是通过产生随机数进行的。
所谓随机种子(Random Seed)是计算机生成伪随机数序列时所用的初始值。在计算机中,完全随机的数是很难生成的,因为计算机是执行确定性操作的机器。所以通常采用数学算法(伪随机数生成器)来生成看起来像是随机的数序列。然而,为了使这个序列可以在需要时重现,算法会从一个初始的输入值开始,这个值就是所谓的“随机种子”。
如果不知道这个数字该输入什么,也可以放着不去管。