本文共 2048 字,大约阅读时间需要 6 分钟。
MATLAB 中的 classify 函数是一个强大的分类工具,专为处理图像、序列或特征数据设计,基于已训练好的深度神经网络进行分类预测。尽管该函数已不再是 MATLAB 的推荐使用方式(从 R2024a 起),但它仍然在旧版模型和某些项目中得到广泛应用,尤其是在通过 SeriesNetwork 或 DAGNetwork 对象进行快速推理时。
classify 函数的主要用途classify(net, data) 函数返回分类结果和概率得分,具体形式如下:
[Y, scores] = classify(net, data)
net:需要传入一个已训练好的网络对象(支持 SeriesNetwork 或 DAGNetwork)。data:输入数据可以是图像(如 imageDatastore)、序列或特征数组。Y:分类结果,具体形式取决于输入数据类型: scores:对应每一类的概率得分,具体形式也是基于输入数据类型: 为了更好地支持多种网络结构和提供更高的灵活性,MATLAB 推荐使用以下替代方案:
scores = minibatchpredict(net, data);Y = scores2label(scores, classNames);
这种方法适用于 dlnetwork 对象,支持更多网络架构和自定义功能。
net = squeezenet;img = imread('peppers.png');img = imresize(img, net.Layers(1).InputSize(1:2));[Y, scores] = classify(net, img); imds = imageDatastore('images', 'IncludeSubfolders', true, 'LabelSource', 'foldernames');[Y, scores] = classify(net, imds); [Y, scores] = classify(net, img);bar(scores);
Y = classify(net, sequenceData);
classify 函数支持以下数据类型:
numeric array、imageDatastore、augmentedImageDatastore。cell array 或 numeric array(适用于 LSTM/GRU)。table 或 numeric array。X1, X2, ..., XN 或 CombinedDatastore。classify 函数还支持以下参数:
MiniBatchSize:每次推理处理的样本数(默认 128)。ExecutionEnvironment:指定推理环境("auto"、"gpu"、"cpu" 等)。SequenceLength:用于序列分类的填充方式("longest"、"shortest" 或定长)。SequencePaddingValue:用于序列填充的默认值(如 0)。SequencePaddingDirection:填充方向("left" 或 "right")。Y:分类结果。 scores:每一类的概率得分。 classify 函数的优势(dlnetwork)trainnet 配合更高效。scores = minibatchpredict(dlnet, XTest);Y = scores2label(scores, classNames);
| 特性 | classify | 推荐替代方案 |
|---|---|---|
| 支持模型 | SeriesNetwork / DAGNetwork | dlnetwork |
| 推理能力 | 固定结构 | 动态图、自定义输出 |
| 分类方法 | 一步返回分类结果 | 返回得分后自行解码 |
| 状态 | 已不推荐使用 | 推荐 |
如已有 trainNetwork 训练的模型,可以通过 dag2dlnetwork 进行转换:
dlnet = dag2dlnetwork(net);
转载地址:http://kyyfk.baihongyu.com/