【opencv】示例-neural_network.cpp 使用机器学习模块创建并训练一个简单的多层感知机(神经网络)模型...

109f3a888d630bac574d9ce19101b81d.png

#include <opencv2/ml/ml.hpp> // 引入OpenCV的机器学习模块using namespace std; // 使用标准命名空间
using namespace cv; // 使用OpenCV命名空间
using namespace cv::ml; // 使用OpenCV机器学习命名空间int main()
{//创建随机训练数据Mat_<float> data(100, 100); // 申请100行100列的浮点数矩阵作为数据randn(data, Mat::zeros(1, 1, data.type()), Mat::ones(1, 1, data.type())); // 用正态分布随机填充数据,均值为0,方差为1//为每个类别创建一半的样本Mat_<float> responses(data.rows, 2); // 申请与data行数相同,2列的浮点数矩阵作为响应(输出)for (int i = 0; i<data.rows; ++i) // 遍历所有样本{if (i < data.rows/2){responses(i, 0) = 1; // 前半部分样本标记为第一类responses(i, 1) = 0;}else{responses(i, 0) = 0; // 后半部分样本标记为第二类responses(i, 1) = 1;}}/*// 如果只需要单一响应(回归分析),可以使用以下代码Mat_<float> responses(data.rows, 1); // 申请单列响应矩阵for (int i=0; i<responses.rows; ++i)responses(i, 0) = i < responses.rows / 2 ? 0 : 1; // 前半部分标记为0,后半部分标记为1*///创建神经网络Mat_<int> layerSizes(1, 3); // 定义一个1行3列的整数矩阵,用于指定网络每层的大小layerSizes(0, 0) = data.cols; // 输入层神经元数量等于数据列数layerSizes(0, 1) = 20;        // 隐藏层设为20个神经元layerSizes(0, 2) = responses.cols; // 输出层神经元数量等于响应列数Ptr<ANN_MLP> network = ANN_MLP::create(); // 创建多层感知机神经网络network->setLayerSizes(layerSizes); // 设置网络层大小network->setActivationFunction(ANN_MLP::SIGMOID_SYM, 0.1, 0.1); // 设置激活函数为对称S型函数,激活参数为0.1network->setTrainMethod(ANN_MLP::BACKPROP, 0.1, 0.1); // 设置训练方法为反向传播,学习率和动量都为0.1Ptr<TrainData> trainData = TrainData::create(data, ROW_SAMPLE, responses); // 利用数据和响应创建训练数据network->train(trainData); // 使用训练数据训练网络if (network->isTrained()) // 如果网络训练好了{printf("Predict one-vector:\n"); // 打印预测一个向量Mat result; // 用于保存预测结果的矩阵network->predict(Mat::ones(1, data.cols, data.type()), result); // 预测一个全1向量的输出cout << result << endl; // 输出预测结果printf("Predict training data:\n"); // 打印预测训练数据for (int i=0; i<data.rows; ++i) // 遍历所有训练数据{network->predict(data.row(i), result); // 对每一行数据进行预测cout << result << endl; // 输出每一行的预测结果}}return 0; // 程序结束,返回0
}

该代码的函数是使用OpenCV的机器学习模块创建并训练一个简单的多层感知机(神经网络)模型。代码生成了一些随机数据和相应的标签,然后设置了神经网络的层结构和训练参数,利用随机生成的数据训练网络,最后使用训练完成的模型来预测一些新数据的输出。

终端输出:

Predict one-vector:
[0.49815065, 0.49921253]
Predict training data:
[0.49815512, 0.4992235]
[0.49815148, 0.4992148]
[0.49816421, 0.49922886]
[0.49815488, 0.49921444]
[0.4981553, 0.49921337]
[0.49815708, 0.49922335]
[0.49815473, 0.49921861]
[0.49815747, 0.49921554]
[0.49815911, 0.49922082]
[0.4981544, 0.49921104]
[0.49815312, 0.49920845]
[0.49815834, 0.4992134]
[0.4981578, 0.499221]
[0.49815252, 0.49921796]
[0.49815798, 0.49920991]
[0.4981553, 0.49921247]
[0.49815372, 0.49922264]
[0.49815732, 0.49922493]
[0.49815607, 0.49922168]
[0.49814662, 0.49921048]
[0.49815735, 0.49921829]
[0.49815637, 0.4992227]
[0.49815381, 0.49921602]
[0.49815139, 0.49921939]
[0.49815428, 0.49921471]
[0.4981533, 0.49922156]
[0.49815425, 0.49922514]
[0.49815568, 0.4992153]
[0.49816135, 0.49922994]
[0.49815443, 0.49921793]
[0.49815369, 0.49921811]
[0.49815857, 0.4992213]
[0.49815249, 0.49921635]
[0.49815717, 0.49922404]
[0.49815562, 0.49922115]
[0.49815992, 0.49922723]
[0.49816322, 0.49921566]
[0.49815544, 0.49922326]
[0.4981539, 0.49922061]
[0.49815902, 0.49923074]
[0.49816567, 0.49922168]
[0.49816078, 0.49921575]
[0.49815938, 0.49921471]
[0.49815077, 0.4992201]
[0.49815583, 0.49921182]
[0.49815345, 0.49921283]
[0.4981598, 0.49921614]
[0.49815416, 0.49921855]
[0.49815762, 0.4992173]
[0.49815825, 0.49921978]
[0.49815825, 0.49922138]
[0.49815908, 0.49921981]
[0.49815544, 0.49921504]
[0.49816117, 0.49923223]
[0.49816099, 0.49921462]
[0.49815351, 0.49922308]
[0.49816227, 0.49923256]
[0.49815354, 0.49922392]
[0.49815038, 0.49922356]
[0.49816525, 0.49922138]
[0.49815342, 0.49922705]
[0.49815989, 0.49922326]
[0.49815401, 0.49921766]
[0.49815825, 0.49921879]
[0.49815637, 0.49921662]
[0.49815908, 0.49922174]
[0.49815243, 0.49921563]
[0.49815255, 0.49921766]
[0.49815673, 0.49921358]
[0.49816242, 0.49922019]
[0.49816835, 0.4992229]
[0.49815518, 0.49920934]
[0.49815202, 0.49921903]
[0.49815437, 0.49922141]
[0.49815497, 0.49921486]
[0.49815184, 0.49921608]
[0.49815631, 0.49922335]
[0.49815813, 0.49921325]
[0.49815223, 0.49922213]
[0.49815005, 0.49921677]
[0.49815634, 0.49921936]
[0.49816167, 0.49923047]
[0.49815112, 0.49921957]
[0.49815676, 0.49921891]
[0.49815649, 0.49922562]
[0.49815223, 0.49921489]
[0.49815086, 0.49922147]
[0.49815762, 0.49921981]
[0.49815792, 0.49921963]
[0.49815729, 0.49921337]
[0.49815807, 0.49922234]
[0.49815661, 0.49921706]
[0.49815363, 0.49922809]
[0.49815917, 0.49921337]
[0.4981555, 0.49922144]
[0.49816197, 0.49922115]
[0.49815977, 0.49922109]
[0.49816063, 0.4992297]
[0.49815196, 0.49921131]
[0.49814603, 0.49921173]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符和字符串操作函数总结

索引 一 . 字符操作函数1. 字符分类函数2. 字符转换函数 二 . 字符串操作函数长度不受限制的字符串操作函数1. strcpy函数的使用和模拟实现2. strcat函数的使用和模拟实现3. strcmp函数的使用和模拟实现 长度受限制的字符串操作函数1. strncpy函数的使用2. strncat函数的使用3.…

RT-Thread 启动流程源码详解

RT-Thread 启动流程 一般了解一份代码大多从启动部分开始,同样这里也采用这种方式,先寻找启动的源头。RT-Thread 支持多种平台和多种编译器,而 rtthread_startup() 函数是 RT-Thread 规定的统一启动入口。一般执行顺 序是:系统先从启动文件开始运行,然后进入 RT-Thread 的…

vi编辑器

目录 一、文本编辑器vi命令 1.作用&#xff1a; 2.vi和vim 二、vi编辑器的三种模式 三、输入模式 四、命令模式 五、末行模式 一、文本编辑器vi命令 1.作用&#xff1a; 创建或修改文本文件 维护Linux系统中的各种配置文件 2.vi和vim vi:类UNIX操作系统的默认文本编辑器…

标准更新丨美国发布玩具安全标准ASTM F963-23

2023年10月13日&#xff0c;美国材料试验协会 (ASTM)发布了玩具安全标准ASTM F963-23。新版标准主要修订了声响、电池可触及性、膨胀材料和弹射玩具的技术要求&#xff0c;另外&#xff0c;澄清和调整了邻苯二甲酸酯、玩具基材重金属的豁免以及溯源标签的要求&#xff0c;使其保…

基于Python的豆瓣电影、豆瓣电影评分可视化、豆瓣电影评分预测系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

从零开始写一个RTSP服务器(一)RTSP协议讲解

目录 前言一、什么是RTSP协议&#xff1f;二、RTSP协议详解2.1 RTSP数据格式2.2 RTSP请求的常用方法2.3 RTSP交互过程2.4 sdp格式 三、RTP协议3.1 RTP包格式3.2 RTP OVER TCP 四、RTCP 前言 为什么要写这个系列&#xff1f; 因为我自己在学习rtsp协议想自己从零写一个rtsp服务…

【opencv】示例-npr_demo.cpp 非真实感渲染:边缘保留平滑、细节增强、铅笔素描/彩色铅笔绘图和风格化处理...

Edge Preserve Smoothing- Using Normalized convolution Filter Edge Preserve Smoothing-Using Recursive Filter Detail Enhancement Pencil sketch/Color Pencil Drawing Stylization /* * npr_demo.cpp * * 作者: * Siddharth Kherada <siddharthkherada27[at]gmail[do…

JavaScript代码挑战

让我们回到朱莉娅和凯特关于狗的研究。这次&#xff0c;他们想把狗的年龄转换成人的年龄&#xff0c;并计算出研究中狗的平均年龄。 创建一个函数 “calcAverageHumanAge”&#xff0c;该函数接受一个狗的年龄数组&#xff08;‘age’&#xff09;&#xff0c;并按顺序执行以下…

KDTree索引(K近邻搜索,半径R内近邻搜索)——PCL

K近邻搜索&#xff08;K Nearest Neighbors&#xff09; K近邻搜索是一种基于点数量的搜索方法&#xff0c;它会找到指定点附近最接近的K个邻居点。K近邻搜索中的K值是一个参数&#xff0c;您需要指定要搜索的邻居数量。该方法适用于需要查找固定数量邻居点的情况&#xff0c;…

Redis队列与Stream

Redis队列与Stream、Redis 6多线程详解 Redis队列与StreamStream总述常用操作命令生产端消费端单消费者消费组消息消费 Redis队列几种实现的总结基于List的 LPUSHBRPOP 的实现基于Sorted-Set的实现PUB/SUB&#xff0c;订阅/发布模式基于Stream类型的实现与Java的集成消息队列问…

Django模型入门

Django模型入门 为了能够学会使用Django模型&#xff0c;本节通过构建一个实际的Django模型来帮助读者尽快入门。 3.2.1 定义模型 既然Django模型实现了ORM功能&#xff0c;那么它就是对数据库实例的描述和实现。下面&#xff0c;我们通过一个简单的实例进行讲解。 如果需…

C语言-详解内存函数

文章目录 1.memcpy使用和模拟实现1.1 memcpy函数的使用规则1.2 memcpy函数的使用1.2 模拟实现memcpy函数 2.memmove 函数的使用和模拟实现2.1 memmove 函数使用规则2.2 memmove函数的使用2.3 模拟实现memmove函数2.3.1 从后往前移2.3.2 从前往后移 2.4 算法实现2.4.1 从前往后移…

机器学习之特征选择(Feature Selection)

1 引言 特征提取和特征选择作为机器学习的重点内容&#xff0c;可以将原始数据转换为更能代表预测模型的潜在问题和特征的过程&#xff0c;可以通过挑选最相关的特征&#xff0c;提取特征和创造特征来实现。要想学习特征选择必然要了解什么是特征提取和特征创造&#xff0c;得…

算法100例(持续更新)

算法100道经典例子&#xff0c;按算法与数据结构分类 1、祖玛游戏2、找下一个更大的值3、换根树状dp4、一笔画完所有边5、树状数组&#xff0c;数字1e9映射到下标1e56、最长回文子序列7、超级洗衣机&#xff0c;正负值传递次数8、Dijkstra9、背包问题&#xff0c;01背包和完全背…

React Hooks 全解: 常用 Hooks 及使用场景详解

React Hooks 是 React 16.8 版本引入的一项重要特性,它极大地简化和优化了函数组件的开发过程。 React 中常用的 10 个 Hooks,包括 useState、useEffect、useContext、useReducer、useCallback、useMemo、useRef、useLayoutEffect、useImperativeHandle 和 useDebugValue。这些…

计算机网络——实现smtp和pop3邮件客户端

实验目的 运用各种编程语言实现基于 smtp 协议的 Email 客户端软件。 实验内容 1. 选择合适的编程语言编程实现基于 smtp 协议的 Email 客户端软件。 2. 安装 Email 服务器或选择已有的 Email 服务器&#xff0c;验证自己的 Email 客户端软件是否能进行正常的 Email 收发功…

GAMS104 现代游戏引擎 2

渲染的难点可以分为一下三部分&#xff1a;如何计算入射光线、如何考虑材质以及如何实现全局光照。 渲染的难点之一在于阴影&#xff0c;或者说是光的可见性。如何做出合适的阴影效果远比想象中要难得多&#xff0c;在实践中往往需要通过大量的技巧才能实现符合人认知的阴影效…

OpenHarmony实例应用:【常用组件和容器低代码】

介绍 本篇Codelab是基于ArkTS语言的低代码开发方式实现的一个简单实例。具体实现功能如下&#xff1a; 创建一个低代码工程。通过拖拽的方式实现任务列表和任务信息界面的界面布局。在UI编辑界面实现数据动态渲染和事件的绑定。 最终实现效果如下&#xff1a; 相关概念 低代…

Tuxera Ntfs for mac 2023中文解锁版安装、密钥下载与激活教程 Tuxera激活码 tuxera破解

Tuxera Ntfs for mac2023是Mac中专用于读写外置存储的工具&#xff0c;具有强大的磁盘管理和修复功能&#xff0c;它在Mac上完全读写NTFS格式硬盘&#xff0c;快捷的访问、编辑、存储和传输文件。能够在 Mac 上读写 Windows NTFS 文件系统。Tuxera NTFS 实现在Mac OS X系统读写…

2024妈妈杯数学建模A 题思路分析-移动通信网络中 PCI 规划问题

# 1 赛题 A 题 移动通信网络中 PCI 规划问题 物理小区识别码(PCI)规划是移动通信网络中下行链路层上&#xff0c;对各覆盖 小区编号进行合理配置&#xff0c;以避免 PCI 冲突、 PCI 混淆以及 PCI 模 3 干扰等 现象。 PCI 规划对于减少物理层的小区间互相干扰(ICI)&#xff0c;增…