随着我对ML(我是移动DEV)的了解越来越多,我开始在脑海中产生一个类比。我想要社区的意见/验证。
作为前端DEV,您有一个后端和一个可以向其发出请求的API。 API的输入和输出的标准格式是JSON。
我遇到了ML模型的问题,我试图在不知道如何读取期望输入(API)且不知道如何解码期望输出的地方使用它。
到目前为止,我的经验是分散的,因为有些模型说“给我一张[1,2,120,120]的图像”之类的东西。
要进行类比,是否有统一的方法来为ML模型(如JSON)定义输入和输出,以统一后端API的输入和输出?
如果是,将数据编码和解码为这种格式必须遵循哪些规则?
答案 0 :(得分:2)
假设此“ ML模型”是在通过训练有素的pytorch模型的前向传递来运行输入以获得输出的上下文中,则定义机器学习模型的输入和输出的统一方法是通过张量。张量本质上是一个包含单个数据类型元素的多维矩阵。考虑具有单一数据类型的多维列表。
Tensors:MLModels :: JSON:WebAPI
使用对象检测器的示例 型号
假设您的带有图像的模型示例是一个对象检测器模型,该模型将图像作为输入并输出狗或猫
输入通常为: [1,2,120,120]形状的图像的张量表示,其中1表示批处理大小,2是您的rgb通道的尺寸,而120x120是图像的宽度和高度。
输出通常为: 标准化的二维张量,如[0.7,0.3],其中索引0表示图像描述狗的概率,索引1表示图像是猫的概率。
编码和解码
将输出解码为“ dog”或“ cat”之类的字符串是显而易见的。
对图像进行编码不太明显。从本质上讲,格式 图像的是张量的...多维矩阵 包含单个数据类型。因此,对一个 JPEG或PNG形式的图像通过张量表示 rgb通道尺寸和每个通道的像素值。 通常,图像文件是使用库和方法(例如 python映像库和pytorch的 torchvision.transforms.ToTensor()。
此示例非常特定于对象检测器类型模型,但是大多数受监督的ML模型将输出类似于上述的张量或单标签。通常,大多数ML模型将始终具有可表示为张量的数据输入和输出。