使用 CoreMLTools 3 beta 创建 KNearestNeighbors

对于一个项目,我想创建一个 Core ML 3 模型,该模型正在接收一些文本(即来自邮件)并对其进行分类。此外,模型应该是可更新的,并且可以在设备上进行训练。因此,我发现 KNearestNeighborsClassifier 可以更新,并希望将它们用于我的方法。但是,首先我得到了一个错误


" RuntimeWarning: You will not be able to run predict() on this Core ML model. Underlying exception message was: Error compiling model: "Error reading protobuf spec. validator error: KNearestNeighborsClassifier requires k to be a positive integer."

在使用脚本创建这样的模型时(见下文)。此外,我不确定如何正确使用 KNearestNeighborsClassifier 来解决我的问题。特别是,如果我想对一些文本进行分类,哪个维度是正确的?我将如何在应用程序中正确使用模型?也许你知道一些有用的指南,我还没有找到=


我创建 KNearestNeighborsClassifier 的脚本基于本指南:https ://github.com/apple/coremltools/blob/master/examples/updatable_models/updatable_nearest_neighbor_classifier.ipynb 我已经安装并且正在使用 coremltools==3.0b6。


这是我创建模型的实际脚本:


number_of_dimensions = 128


from coremltools.models.nearest_neighbors import KNearestNeighborsClassifierBuilder


builder = KNearestNeighborsClassifierBuilder(input_name='input',

                                             output_name='output',

                                             number_of_dimensions=number_of_dimensions,

                                             default_class_label='defaultLabel',

                                             number_of_neighbors=3,

                                             weighting_scheme='inverse_distance',

                                             index_type='linear')


builder.author = 'Christian'

builder.license = 'MIT'

builder.description = 'Classifies {} dimension vector based on 3 nearest neighbors'.format(number_of_dimensions)


我希望您能帮助我,告诉我总体上我使用 KNearestNeighborsClassifier 进行文本分类的方法是否有意义,并希望您能帮助我成功创建 CoreML 模型。


三国纷争
浏览 90回答 1
1回答

慕莱坞森

不知道为什么会出现该错误,但请确保您使用的是最新(测试版)版本的 coremltools(当前为 3.0b6)。至于维数,您需要以某种方式将文本转换为固定长度的向量。究竟如何做到这一点完全取决于您要解决的问题。例如,您可以使用词袋技术将短语转换为这样的向量。您可以为此使用词嵌入、神经网络或任何其他常用技术。但是您需要一些方法将文本转换为特征向量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java