本文共 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/