博客
关于我
matlab中的一些函数:classify、montage---ChatGPT4o作答+mathworks官方文档
阅读量:795 次
发布时间:2023-02-07

本文共 2048 字,大约阅读时间需要 6 分钟。

MATLAB 中的 classify 函数是一个强大的分类工具,专为处理图像、序列或特征数据设计,基于已训练好的深度神经网络进行分类预测。尽管该函数已不再是 MATLAB 的推荐使用方式(从 R2024a 起),但它仍然在旧版模型和某些项目中得到广泛应用,尤其是在通过 SeriesNetworkDAGNetwork 对象进行快速推理时。


一、classify 函数的主要用途

classify(net, data) 函数返回分类结果和概率得分,具体形式如下:

[Y, scores] = classify(net, data)

参数说明:

  • net:需要传入一个已训练好的网络对象(支持 SeriesNetworkDAGNetwork)。
  • data:输入数据可以是图像(如 imageDatastore)、序列或特征数组。
  • Y:分类结果,具体形式取决于输入数据类型:
    • 图像或特征分类:返回一个 N×1 的分类向量(N 为样本数)。
    • 序列分类:返回一个元胞数组。
  • scores:对应每一类的概率得分,具体形式也是基于输入数据类型:
    • 图像或特征分类:返回一个 N×K 的矩阵(N 为样本数,K 为类别数)。
    • 序列分类:返回一个元胞数组(每个元素为 T×K)。

二、推荐的替代方案(从 R2024a 起)

为了更好地支持多种网络结构和提供更高的灵活性,MATLAB 推荐使用以下替代方案:

scores = minibatchpredict(net, data);Y = scores2label(scores, classNames);

这种方法适用于 dlnetwork 对象,支持更多网络架构和自定义功能。


三、典型使用示例

1. 图像分类(使用预训练网络)

net = squeezenet;img = imread('peppers.png');img = imresize(img, net.Layers(1).InputSize(1:2));[Y, scores] = classify(net, img);

2. 批量图像分类

imds = imageDatastore('images', 'IncludeSubfolders', true, 'LabelSource', 'foldernames');[Y, scores] = classify(net, imds);

3. 获取分类得分(softmax 概率)

[Y, scores] = classify(net, img);bar(scores);

4. 序列分类

Y = classify(net, sequenceData);

四、输入类型支持

classify 函数支持以下数据类型:

  • 图像数据numeric arrayimageDatastoreaugmentedImageDatastore
  • 序列数据cell arraynumeric array(适用于 LSTM/GRU)。
  • 特征数据tablenumeric array
  • 多输入网络X1, X2, ..., XNCombinedDatastore

五、常用参数(Name-Value)

classify 函数还支持以下参数:

  • MiniBatchSize:每次推理处理的样本数(默认 128)。
  • ExecutionEnvironment:指定推理环境("auto""gpu""cpu" 等)。
  • SequenceLength:用于序列分类的填充方式("longest""shortest" 或定长)。
  • SequencePaddingValue:用于序列填充的默认值(如 0)。
  • SequencePaddingDirection:填充方向("left""right")。

六、输出解释

  • Y:分类结果。
    • 图像/特征分类:返回一个 N×1 的分类向量。
    • 序列分类:返回一个元胞数组。
  • scores:每一类的概率得分。
    • 图像/特征分类:返回一个 N×K 的矩阵。
    • 序列分类:返回一个元胞数组(每个元素为 T×K)。

七、classify 函数的优势(dlnetwork

  • 更灵活的训练和推理:支持动态图和多输出网络。
  • trainnet 配合更高效
  • 示例:
scores = minibatchpredict(dlnet, XTest);Y = scores2label(scores, classNames);

八、总结

特性 classify 推荐替代方案
支持模型 SeriesNetwork / DAGNetwork dlnetwork
推理能力 固定结构 动态图、自定义输出
分类方法 一步返回分类结果 返回得分后自行解码
状态 已不推荐使用 推荐

如已有 trainNetwork 训练的模型,可以通过 dag2dlnetwork 进行转换:

dlnet = dag2dlnetwork(net);

转载地址:http://kyyfk.baihongyu.com/

你可能感兴趣的文章
Map 遍历取值及jstl的取值
查看>>
Map.Entry学习和详解
查看>>
Mapbox GL示例教程【目录】-- 已有80篇
查看>>
Mapbox TOKML:将GeoJSON转换为KML的开源工具
查看>>
MapboxGL 入门系列教程(一):应该如何学习 MapboxGL
查看>>
Mapped Statements collection already contains value for*
查看>>
mapper.xml中mapper找不到问题
查看>>
Mapper映射文件传参(数组/集合)与#{}和${} 区别
查看>>
mapping文件目录生成修改
查看>>
MapReduce Java API-使用Partitioner实现输出到多个文件
查看>>
MapReduce Java API-多输入路径方式
查看>>
MapReduce Java API实例-排序
查看>>
MapReduce与HDFS企业级优化
查看>>
MapReduce分布编程模型之函数式编程范式
查看>>
MapReduce实现二度好友关系
查看>>
MapReduce的思想
查看>>
MapReduce的模式、算法和用例
查看>>
MapReduce的编程思想(1)
查看>>
MapReduce程序依赖的jar包
查看>>
MapReduce程序(一)——wordCount
查看>>