- 博客(32)
- 问答 (1)
- 收藏
- 关注
原创 windows下编译tensorflow2.5.0 c++库并调用
近期使用python+keras+unet网络训练了一个图像分割模型(.h5),因为最终需要在C++中使用,所以需要2步转换:模型转换(h5 —> pb):需要的朋友可以参考一下之前写的文章。模型转换编译tensorflow,生成C++库:本文重点说明的内容。说明:keras没有c++相关接口,所以不能直接在c++中调用由keras.save生成的h5模型,需要将其转换为pb模型,由tensorflow c++相关接口来调用。1、开始之前明确需要编译的tensorflow版本,这个和
2021-07-02 19:55:34
4814
36
原创 keras训练的h5模型转换为pb模型
最近使用keras训练了一个图像分割的模型(.h5),但最终需要在C++中调用该模型,由于keras没有C++接口,所以需要将.h5模型转换为.pb模型后通过tensorflow C++接口进行调用。由于本人之前接触深度学习较少,很多东西不是很懂,所以在转换过程中遇到了很多问题,在此记录,共同学习。1、转换之前需要注意的点本人在转换过程中发现tensorflow1.x和2.x存在区别,所以在转换之前最好确定训练模型时使用的tensorflow版本,转换过程使用的环境尽量和训练模型使用的环境保持一致,
2021-06-28 18:22:55
5161
9
原创 机器学习笔记06-吴恩达机器学习课后习题(1)
前言本节主要分析吴恩达教授授课过程中的课后练习题计算过程,通过习题进一步复习巩固前边所学知识。1、课后习题:ex1下载地址:https://pan.baidu.com/s/158L1eMLSlkWUYvHe_9iVQw提取码:xodk2、使用工具:Octave 6.1.0,官网:https://wiki.octave.org/GNU_Octave_Wiki该版本下载地址:https://www.gnu.org/software/octave/download习题简述ex1习题主要包含3部分内容的练
2020-12-22 20:17:47
893
原创 机器学习笔记05-矩阵基础知识
前言矩阵的相关操作在机器学习中很重要,为了给之后打下坚实的基础,在此对矩阵的基础知识进行总结学习。主要包括矩阵的四则运算(加减乘除)以及矩阵的转置与逆矩阵。什么是矩阵在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合 ,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。直观解释就是由中括号包起来的一组二维数据,如下所示即就是一个2*2的矩阵。A=[1234]A = \left[\begin{array}{ll}1 & 2 \\3 &
2020-12-16 19:03:38
1213
原创 机器学习笔记04-梯度下降算法中的学习率(步长)
1、回顾之前所说的梯度下降算法中有几个细节,求导部分已经在上一节进行说明,接下来主要对公式当中的α\alphaα,即就是学习率(步长)进行说明。θj:=θj−α∂∂θjJ(θ0,θ1),for(j=1andj=0)\theta_{j}:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J_{\left(\theta_{0}, \theta_{1}\right)},for(j=1 and j=0)θj:=θj−α∂θj∂J(θ0,θ
2020-12-06 18:18:07
10354
原创 CString与string转换
string转CString在使用MFC时,遇到了CString与string转换的问题,特此记录下来。其实CString与string的转换方式有挺多种的,但也并不是每一种都适用,可能需要一些稍微的改动才能正常运行。比如网上常见的一种转换方法(如果你的能直接转换也是没问题滴):哦吼,发现转不了,就很气。提示错误为:no suitable constructor exists to convert from “const char *” to “ATL::CStringT<wchar_t, S
2020-12-03 15:17:04
42802
4
原创 spdlog日志库使用
1、说明spdlog是一款开源的、快速的日志库。使用简单、功能齐全,能满足日常开发使用。下载地址:https://github.com/gabime/spdlog它的优点有很多,使用过程主要体现的优点有以下几点:(1)配置特别简单,仅包含头文件即可;(2)写日志方式简单明了;(3)可实现自动按日期创建日志文件/定时创建日志文件;(4)可自定义日志格式;(5)可以输出当前输出日志所在的文件及函数;(6)可自定义文档大小;(7)可将不同级别的信息输出到不同日志文件;(8)多平台等。结合自
2020-12-02 17:06:20
8417
1
原创 机器学习笔记03-求导规则与梯度下降算法推导
导数简介关于导数的定义,网上已经有很多了,本文主要说明一些常见函数的导数以及一些推导过程。之前看过一篇知乎,对如何理解导数讲的挺全面的,有兴趣的朋友可以看看这篇文章—>如何理解导数的概念。关于导数最简单也最通俗易懂的一个定义就是:曲线的切线的斜率。什么意思呢?(1)首先理解切线,曲线上两点的连线确定一条割线,当这两个点足够靠近时,割线就变成了切线。(2)当B点慢慢靠近A点时,割线的斜率一直在发生变化。当B点足够靠近A点时(“极限的思想”),斜率也越来越接近一个值,这个值就叫作导数。(3)我
2020-11-27 16:53:20
433
原创 机器学习笔记02-线性回归模型中的代价函数与梯度下降
总结该部分主要针对前一节内容进行补充和回顾,上一节主要介绍了-线性回归函数模型与代价函数。上一节内容点此查看。(1)线性回归函数模型,表示为:hypothesis:hθ(x)=θ0+θ1x等价于:h(x)=θ0+θ1x\begin{array}{l}hypothesis:h_{\theta(x)}=\theta_{0}+\theta_{1} x \\等价于:h_{(x)}=\theta_{0}+\theta_{1} x\end{array}hypothesis:hθ(x)=θ0+θ1x等价
2020-11-20 16:50:27
457
原创 机器学习笔记01-单变量线性回归以及代价函数
这里写自定义目录标题目录常见名词功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入目录开篇:一枚热爱机器学习的菜鸟程序员,通过学习吴恩达教授的机器学习课程,总结归纳一些重要知识点及自己的感悟。文中有错误或不足之处,希望大家批评指正
2020-11-07 19:08:09
342
原创 MFC中Picture Control 控件中图像遮挡后消失
1、说明最近在使用MFC时发现,Picture Control控件中的图像若被其他窗口遮盖、窗口移出屏幕外、最小化等操作时,都会导致图像消失。其原因在于onPaint()函数。
2020-08-25 09:50:46
2653
原创 Dalsa 相机拍摄图像丢帧(模糊)解决办法
Dalsa相机图像丢帧可能存在的原因1、硬件原因(1)硬件主要涉及网线和网卡的选择,Dalsa相机最好选择千兆网线和千兆网卡。若一台PC需要连接多个相机,最好添加对应个数的网卡;(2)网卡配置:对应网卡需要进行配置,配置方法如下所示:①打开“网络连接”,选择对应网卡,右键选择“属性”;②选择“配置”③选择“高级”,配置“巨帧数据包”,选择最大(9014字节);“速度和双工”,选择最大(1.0 Gbps全双工)。至此,和硬件相关的配置已经结束,如果能解决图像丢帧的问题.
2020-07-13 20:48:27
4043
2
原创 LintCode-合并排序数组
描述合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序。例如int a[] = {1,2,3,4},int b[] ={2,4,5,6}合并后的结果为[1,2,2,3,4,4,5,6]方法一:直接比较两个vector中的所有元素vector<int> mergeSortedArray(vector<int> &A, vector&...
2020-02-09 17:04:44
264
原创 LintCode-求取A+B的问题
问题:给出两个整数a和b,求取它们的和。分析:1.首先我们想到的方法肯定是直接使用“+”等运算符,例如return a+b,如果直接使用算术运算符,那么这道题就没有任何意义了。2.大家都知道咋们键入的一系列指令、数据等最终都会被计算机转化为对应的二进制数据来识别,所以除了直接使用算术运算符,还有一种方法就是基于二进制数据使用位运算。通常情况下,位运算比算术运算要快。位运算有很多种比如“...
2020-02-05 12:56:19
180
原创 无重复字符最长字串的长度
1、题目说明给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例 输入 输出 说明 “abcade” 5 无重复字符最长子串为“bcade”,所以输出为5 “aaaaa” 1 无重复字符最长子串为“a“,所以输出为1 ”qwwer“ 3 无重复字符最长子串为”wer“,所以输出为3 2、分析根据示例我们可...
2020-01-03 15:52:48
463
转载 机器视觉领域的牛人主页及代码
转载:http://blog.sina.com.cn/s/blog_6833a4df01012bcf.html牛人主页(主页有很多论文代码)Serge Belongieat UC San DiegoAntonio Torralbaat MITAlexei Ffrosat CMUCe Liuat Microsoft Research New EnglandVittor...
2019-04-26 10:31:37
1996
原创 Linux之shell脚本(一)
1、shell脚本shell终端解释器可以当作人与计算机硬件之间的“翻译官”,它作为用户与Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了比如循环、分支等高级编程语言才有的控制结构特性。shell脚本命令的工作方式有两种:交互式和批处理。交互式:用户每输入一条命令就立即执行。批处理:由用户事先编写好一个完整的shell脚本,shell会一次性执行脚本中诸多的命令。...
2019-02-27 22:09:27
461
4
原创 Linux之重定向,管道符,通配符,转义字符
1、shell重定向介绍重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过重定向来进行这项工作。重定向是很重要的,比如在程序运行过程中,会有一些关键的信息,比如异常、错误、接口调用情况等等,这些都会写到日志文件里。文件描述符当执行shell命令时,会默认打开3个文件,每个文件有对应的文件描述符来...
2019-02-23 23:12:55
743
原创 vim编辑器
vim编辑器的三种模式1、命令模式:控制光标移动,可对文本进行复制、剪切、删除、粘贴和查找等工作。2、输入模式:也叫编辑模式,文本录入。3、末行模式:也叫冒号模式,保存或者退出编辑器,以及设置编辑环境。每次运行vim编辑器默认进入命令模式,如果要进行文档编辑要先切换到输入模式,而每次编辑完成退出时,要先返回命令模式,在进入末行模式,执行文档的保存和退出。在vim中,无法直接从输...
2019-02-21 22:14:38
143
原创 常用Linux命令(三)
文本文件编辑命令1、cat命令用于查看纯文本文件(内容较少的),格式为:cat [参数] [文件]。2、more命令用于查看纯文本文件内容(内容较多),格式:more [参数] [文件]。3、head命令用于查看纯文本文档的前n行,格式:head [参数] [文件],加 “-n 数字”可以显示前多少行文本内容,默认显示前10行。4、tail命令用于查看纯文本文档的后n行或持...
2019-02-19 23:25:48
138
原创 常用Linux命令(二)
ifconfig命令 该命令用来获取网卡配置和网络状态信息等。命令:ifconfig uname命令 uname命令用来查看Linux系统内核和系统版本等信息。命令:uname -a uptime命令 用于查看系统负载情况,等同于top命令的第一行数据,但是不能实时更新。命令:uptime free命令 该命令用于显示当前系统内存的使用量。命令free/free -h,加-h会以M,...
2019-02-18 21:56:32
116
原创 常用Linux命令(一)
1.常用系统命令1、date命令date命令用于显示和设置当前系统的时间和日期,格式:date [参数] [+格式]date命令中常用参数 参数 作用 %t 跳格【Tab键】 %H 小时(24小时制) %l(大写字母i) 小时(12小时制) %M 分钟 %S 秒钟 %Y 年 %m 月 %d 日 ...
2019-02-17 22:12:58
103
原创 Linux下的目录结构
/boot Linux启动所需要的文件 /dev 设备文件 /etc 配置文件 /home 用户的家目录 /media 媒体文件 /mnt 挂载文件 /opt 第三方软件 /proc ...
2019-02-15 19:53:53
199
原创 C++手动输入两个整数,输出这两个整数指定范围内的所有整数
思路:假设输入第一个整数为val1,第二个整数为val2,则输入整数的3种情况为:1、val1=val2,val1-val2的绝对值等于1,这两个结果都一样,输出结果都应该无;2、val1<val2,那么就按顺序输出num(val1<num<val2);3、val1>val2,按顺序输出num(val2<num<val1)。#include...
2019-02-15 08:56:21
6215
原创 判断一棵树是否为完全二叉树
完全二叉树的定义(Complete Binary Tree)若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。一棵二叉树至多只有最下面的两层上的结
2017-07-29 18:25:57
533
原创 求一颗二叉树的镜像
二叉树的镜像,通俗来讲就是镜子中所呈的像,左右颠倒。如图就是一个简单的二叉树镜像图。二叉树镜像的过程从图中可以看出,这棵树的根节点相同,但它们的左右两个子节点交换了位置。因此,我们不妨先交换根节点的两个子节点,就得到图中的第二颗树。交换根节点的两个子节点后,我们发现值为3,2的节点的子节点仍然保持不变,因此我们还需要交换这两个节点的左右子节点。交换完之后就分别得到图中的第三、四颗树。做完这两次交换之
2017-07-25 20:19:02
290
原创 常见的四种tcp定时器
(1)重传计时器:Retransmission Timer重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建这个特定报文段的重传计时器,可能发生两种情况:若在计时器超时之前收到对报文段的确认,则撤销计时器;若在收到对特定报文段的确认之前计时器超时,则重传该报文,并把计时器复位;重传时间=2*RTT;RTT的值应该动态计算。常用的公式是:RTT=
2017-07-24 20:27:57
307
原创 求二叉树叶子节点的个数/求二叉树第k层的节点个数。
#include <iostream>using namespace std;template<class T>struct BinaryTreeNode{ BinaryTreeNode(const T& data) :_data(data) ,_Left(NULL) ,_Right(NULL) {} T _data;
2017-07-24 18:19:40
433
原创 二叉树的层序遍历
所谓的层序遍历,就是按照从上到下,从左到右的顺序遍历该二叉树。所以按层打印的顺序就应该先打印根节点,然后依次为根节点的左孩子,右孩子。根节点的左孩子的左孩子,根节点的左孩子的右孩子……假设有如图所示的二叉树。 由图可知,先打印根节点8,在打印节点8的时候,有必要先把节点6和10两个节点保存在一个容器中。按照从左到右遍历的顺序,我们应先取出节点6,打印6之后应该把它的左右节点5和7依次放入容器中。此
2017-07-22 23:03:41
1002
原创 判断两个不带环链表是否相交?若相交,求入口点。
通常情况下,不带环的两个链表相交如上图所示。 方法一:<1>先判断链表是否相交 ①若相交,那么两个链表的尾节点必然相同。则可以遍历两个链表,判断其尾节点。 ②若不相交,则尾节点必然不相同。 <2>若相交,求其入口点 ①通过遍历两个链表可以得
2017-07-16 18:29:30
272
原创 合并两个有序的单链表
链表1和链表2是两个递增排序的单链表,合并这两个链表得到升序的链表如上图。 链表1的头结点的值小于链表2的头结点的值,所以链表1的头结点是合并后链表的头结点。(如图)在剩余的链表中,链表2的头结点的值小于链表1的头结点的值,因此链表2的头结点是剩余结点的头结点,把这个结点和之前合并好的链表的尾节点链接起来。(如图)递归可以得到合并后的新链表。下面是一段参考代码:#include <iostream
2017-07-14 19:53:05
839
原创 实现一个Add函数,让两个数相加,但是不能使用+、-、*、/等四则运算符。
#include using namespace std;int Add(int num1,int num2){ if (num2 == 0) { return num1; } int tmp,carry; //测试5+7 tmp = num1^num2; //第一步:(101)^(111) = (010)
2017-07-14 15:55:09
1583
空空如也
MATLAB中如何准确定位多个圆
2018-09-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人