- 博客(135)
- 资源 (7)
- 收藏
- 关注
原创 C++基础——11-结构体
文章目录结构体1 结构体基本概念2 结构体定义和使用3 结构体数组4 结构体指针5 结构体嵌套结构体6 结构体做函数参数结构体1 结构体基本概念结构体属于用户自定义的数据类型,允许用户存储不同的数据类型2 结构体定义和使用语法:sturct 结构体名{结构体成员列表};通过结构体创建变量的方式有3种:struct 结构体名 变量名struct 结构体名 变量名={成员1值,成员2值…}定义结构体时顺便创建变量示例(创建结构体——学生类[姓名,年龄,分数]):struct Stude
2021-12-28 22:00:32
2424
原创 C++基础——09-函数
文章目录函数1 概述2 定义3 实现相加的函数功能及其调用4 值传递5 函数的声明6 函数的分文件编写函数1 概述作用:将一段经常使用的代码封装起来,减少代码重复量一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。2 定义函数定义一般有5个步骤:返回值类型函数名参数列表函数体语句return表达式语法:返回值类型 函数名(参数列表){ 函数体语句 return 表达式}3 实现相加的函数功能及其调用代码:/*1. 返回值类型2.
2021-11-13 16:43:58
1037
原创 C++基础——08-数组
文章目录数组1、 一维数组数组所谓数组,就是一个集合,里面存放了相同类型的数据元素特点:数组中每个数据元素都是相同的数据类型数据是由连续的内存位置组成的1、 一维数组1.1 一维数组定义方式数据类型 数组名[数组长度];数据类型 数组名[数组长度]={值1,值2…};数据类型 数组名[]={值1,值2…};代码示例:int main(int argc, char* argv){ /* 1. 数据类型 数组名[数组长度]; 2. 数据类型 数组名[数组长度]=
2021-11-13 15:35:31
1232
原创 C++基础——07-程序流程结构
程序流程结构C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构程序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择的执行相应功能循环结构:依据条件是否满足,循环多次执行某段代码1.1 选择结构1.1.1 if语句作用:执行满足条件的语句if语句的三种形式单行格式的if语句多行格式的if语句多条件的if语句1 单行格式的if语句if(条件){满足条件的执行语句}代码示例int main(){ //用户输入分数,如果分数大于600,则输
2021-09-16 20:53:02
254
原创 C++基础——06-运算符
运算符作用:用于执行代码的运算本章我们主要讲解以下几类运算符:运算符类型作用算术运算符处理四则运算赋值运算符将表达式的值赋给变量比较运算符用于表达式的比较,返回真值或假值逻辑运算符根据表达式的值返回真值或假值1 算术运算符作用:处理四则运算算术运算符包含以下符号:运算符术语示例结果+正号+33-负号-3-3+加号10+313-减号10-37*乘10*330/除
2021-09-07 21:58:04
274
2
原创 C++基础——05-数据类型
数据类型C++在创建变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存1 整型作用:整型变量表示的是整数类型的数据C++中有以下几种方式表示整型,区别在于所占内存空间不同:数据类型占用空间取值范围short(短整型)2字节(−215-2^{15}−215 ~215−12^{15}-1215−1 )int(整型)4字节(−231-2^{31}−231 ~232−12^{32}-1232−1 )long(长整型)windows为4字节,lin
2021-09-07 16:35:44
201
原创 C++基础——04-标识符命名规则
标识符命名规则作用:C++规定给标识符(常量、变量)命名时,有一套自己的规则标识符不能是关键字标识符只能由字母、数字、下划线组成第一个字符必须为字母或下划线标识符中字母区分大小写示例代码:#include<iostream>using namespace std;/*1、标识符不能是关键字2、标识符只能由字母、数字、下划线组成3、第一个字符必须为字母或下划线4、标识符中字母区分大小写*/int main(){//案例 //1、标识符不能是关键字、 //
2021-09-04 14:13:15
517
原创 C++基础——03-关键字
关键字作用:关键字是C++中预先保留的单词(标识符)注:在定义变量或者常量的时候,不要使用关键字(C++已经把变(常)量名用了)C++关键字如下:asmdoifreturntypedefautodoubleinlineshorttypeidbooldynamic_castintsignedtypenamebreakelselongsizeofunioncaseenummutablestaticunsignedcatch
2021-09-04 13:57:05
178
原创 C++基础——02-常量
常量作用:用于记录程序中不可更改的数据C++中定义常量的两种方式: #define宏常量 #define 常量名 常量值,通常在文件上方定义,表示一个常量 const修饰的变量 const 数据类型 常量名=常量值 ,通常在变量定义前加关键字const,修饰该变量为常量,不可修改 比如,一周有7天,这个“7”是无法更改的,而如果使用变量int day=7;这个是可以随时在后面程序中更改的,因此,常量就
2021-09-04 13:39:26
273
原创 C++基础——01-变量
变量作用:给一段指定的内存空间起名,方便操作这块内存语法:数据类型 变量名 = 初始值变量存在的意义:方便我们管理内存空间示例代码#include<iostream>using namespace std;int main(){ int a = 10; cout << "a=" << a << endl; return 0;}结果:为什么变量方便我们管理内存空间呢?请看下面一张图:
2021-09-04 11:32:01
206
原创 Pytorch-Center Loss在图像分类上的应用
最近在测试Center Loss在图像分类上的性能,以此记录一下。Center Loss论文:Wen et al. A Discriminative Feature Learning Approach for Deep Face Recognition. ECCV 2016.pytorh版本地址:https://github.com/KaiyangZhou/pytorch-center
2021-07-17 17:22:27
2024
5
原创 OpenCV-C++-CUDA-08-角点(特征点)检测
本章我们使用OpenCV-CUDA版本的角点检测加速(主要针对shi-tomas和harris角点检测)。主要API:cuda::createGoodFeaturesToTrackDetector()#include<opencv2/opencv.hpp>#include<opencv2/cudaimgproc.hpp>using namespace std;using
2020-06-23 16:39:25
1308
原创 OpenCV-C++-CUDA-07-基于颜色的物体跟踪
上一篇OpenCV-C++—CUDA-06-形态学二值化操作展示了二值图像、形态学在OpencCV-CUDA版本上的示例。本章我使用HSV颜色提取,以及形态学操作、联通区域来跟踪物体(跟踪下面偏黄色的小球)。先给一张inRange颜色过滤表:黑灰白红橙黄绿青蓝紫hmin0000,15611263578100125hmax180180180
2020-06-22 16:15:34
906
原创 OpenCV-C++-CUDA-06-形态学二值化操作
本章我们利用cuda加速实现形态学操作。我有这么一张图:当我使用cuda版的threshold()方法时:int main(int argc, char** argv){ Mat image = imread("F:/test/ABCDE.png",0); imshow("input image", image); cuda::GpuMat image_gpu, dst; image_gpu.u
2020-06-21 10:43:48
1104
1
原创 OpenCV-C++-CUDA-05-高斯双边加速,实时美颜
本章我们继续使用OpenCV-C++版本在CUDA下的编程应用,主要使用双边模糊,对图像进行美颜细化。1、高斯双边模糊int main(int argc, char** argv){ Mat image = imread("F:/test/face_image.jpg"); imshow("input image", image); cuda::GpuMat image_gpu,dst; image
2020-06-20 11:38:37
1182
1
原创 TensorFlow-2.x-10-AlexNet的实现
AlexNet可以说是使得深度学习大火的一个网络模型,它构建了多层CNN,增大感受野,加入LRN等方法,使得网络拥有极高的特征提取能力,但受限于设备的元素,当时用了2块GPU来提升训练效率。相关结构及原理可参考一下这篇文章:深入理解AlexNet网络 本章使用tf-2.x来实现AlexNet,由于设备的原因,修改
2020-06-18 09:22:31
593
原创 TensorFlow-2.x-09-LeNet-5的实现
本章节我们进入卷积神经网络的实现,LeNet-5可以说是进入卷积神经网络的入门级别,包含卷积层块和全连接层块两个部分。 利用TF-2.x可以很方便的构建模型,主要构建模型的方法如下:def model(): net=tf.keras.Sequential() net.add(tf.keras.laye
2020-06-17 09:54:26
492
3
原创 TensorFlow-2.x-08-使用正则化方法解决过拟合问题(简洁实现)
上一章【TensorFlow-2.x-07-使用正则化方法解决过拟合问题(从0开始实现)】我是用公式实现了L2正则化,并应用到网络中,这一章我们简洁的构造一个模型,然后,应用L2方法来做权重衰减。实现方式与上一篇基本一样,下面放代码:import tensorflow as tfimport randomimport matplotlib.pyplot as plt# 1、定义数据(多维数据)n_t
2020-06-16 14:05:46
453
原创 TensorFlow-2.x-07-使用正则化方法解决过拟合问题(从0开始实现)
有关正则化方法我在MXNET深度学习框架-09-使用正则化方法解决过拟合问题(以从0开始的线性回归为例)上面已经讲过了并应用了,本章使用TF-2.x来实现它。具体代码跟之前的基本一致,下面直接放代码:import tensorflow as tfimport randomimport matplotlib.pyplot as plt# 1、定义数据(多维数据)n_train, n_test, num
2020-06-16 13:22:20
438
原创 TensorFlow-2.x-06-MLP的简洁实现
上一章用TF-2.x实现了MLP的从0开始。本章我使用TF-2.x中的高阶API来实现MLP(多层感知机),很简单,只需要3步即可。P.S:本章所使用的数据集依旧是fashionmnist数据集。1、数据集读取# 1、读取数据集(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()x_train, x_test = x_train
2020-06-16 11:36:57
297
原创 TensorFlow-2.x-05-MLP的从0开始
本章主要利用多层感知机实现图像分类,具体将构造参数、模型结构、准确率等等。1、数据集读取及归一化(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()x_train, x_test = tf.cast(x_train / 255.0,tf.float32), tf.cast(x_test / 255.0,tf.float3
2020-06-14 15:43:32
191
原创 TensorFlow-2.x-04-多分类逻辑回归的简洁实现
本文不做多余解释,主要是衔接上一章TensorFlow-2.x-03-从0开始的多分类逻辑回归内容,使用TF-2.x来快速实现多分类逻辑回归。1、获取/读取数据集,归一化数据(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()print(x_train.shape,y_train.shape)2、定义及初始化模型def ne
2020-06-14 14:53:02
482
原创 TensorFlow-2.x-03-从0开始的多分类逻辑回归
本章节对应MXNET深度学习框架-05-从0开始的多分类逻辑回归。1、数据集下载及读取本文使用fashionmnist数据集,通过tensorflow可以进行下载和读取:from tensorflow.keras.datasets import fashion_mnist(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()pri
2020-06-14 14:16:10
359
原创 TensorFlow-2.x-02-线性回归的简洁实现
这里我们实现的是接上一篇的从0开始的线性回归,TF-2.x中有比较简洁的实现方式。1、生成数据集num_inputs = 2num_examples = 1000true_w = [2, -3.4] #真实权重true_b = 4.2 # 真实偏置值features = tf.random.normal((num_examples, num_inputs),stddev =1)labels = tr
2020-06-13 12:53:31
419
原创 TensorFlow-2.x-01-从0开始的线性回归
之前我一直使用的是TensorFlow-1.X的版本,虽说静态图模式比较繁琐,但用习惯了之后还是觉得挺不错的,后来TensorFlow-2.X的版本推出了,听说采用了Keras的高阶API,而且默认使用eager模式,然后我也随便看了一下构建模型的代码,第一感觉是跟Pytorch、mxnet好像,如果学习过这两个DNN框架的朋友们去学TF-2.X的话应该来说比较容易,反正我也不知道到底好不好用,下面我就要像一个小
2020-06-13 12:22:45
378
2
原创 OpenCV-C++-CUDA-04-图像模糊和Sobel梯度
本章节我们来学习如何对图像进模糊操作。一、图像模糊1)普通模糊#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;int main(int argc, char** argv){ Mat input_image = imread("F:/test/le
2020-06-06 13:31:44
1215
原创 OpenCV-C++-CUDA-03-图像直方图及几何变换
本章主要内容有图像的直方图计算、直方图均衡化、图像大小变换及旋转(当然了,基于CUDA)。一、直方图计算OpenCV GPU版本计算直方图的时候只能是单通道(这点跟CPU版本不一样),那么如果是多通道怎么办呢,一个一个计算呗。主要API:cuda::split() //通道分离cuda::calcHist() //计算直方图#include<opencv2/opencv.hpp>#
2020-06-06 11:28:06
1037
1
原创 OpenCV-C++-CUDA-02-图像基本操作之像素操作
本章继续学习CUDA下的OpenCV学习,主要是学习CUDA下图像的像素变换。一、图像之间的加减乘除(1) 图像相加主要API:cuda::add(input image1, input image2, output image)需要相加的两张图片:相关代码:#include<opencv2/opencv.hpp>#include<iostream>using n
2020-06-05 13:59:28
1714
5
原创 OpenCV-C++-CUDA-01-基本图像读取及灰度转换
长时间用着Python和深度学习框架,还是要回到图像处理篇,下面我就要重回图像处理(C++)篇了,以此来记录自己下一阶段的学习历程。 我们知道,一般的OpenCV基本都是基于CPU模块的,所以速度方面受限很大,而如果使用GPU来处理图像的话,性能会非一般的提升。本章主要是记录OpenCV和CUDA结合在C++上的应用,
2020-06-05 10:05:23
3182
4
原创 MXNET深度学习框架-30-样式迁移
如果你喜欢拍照,可能接触过滤镜(如下图,图片来源于(动手学深度学习))。它能改变照片的颜色样式,从而使风景照更加锐利或者令人像更加美白。但一个滤镜通常只能改变照片的某个方面。如果要照片达到理想中的样式,经常需要尝试大量不同的组合,其复杂程度不亚于模型调参。具体的原理本章就不做介绍了,请读者自行百度或阅读相关论文。基本结构
2020-05-25 16:18:51
582
原创 MXNET深度学习框架-29-语义分割(FCN)
语义分割计算机视觉领域中的一个重要模块,它与之前的图像分类、目标检测任务不同,它是一个精细到每个像素块的一个图像任务,当然,它包括分类和定位。更多关于语义分割的方法和原理请读者自行搜索相关论文和博文,本文不做过多阐述。...
2020-05-23 14:48:23
1042
3
原创 MXNET深度学习框架-28-SSD(单发多框检测器)目标检测
有关SSD的基本原理本文不做多余的赘述,具体参考其他大神的博文,如:目标检测之SSD本章我们利用SSD来检测图片中的皮卡丘:mxnet中已经有一个皮卡丘的检测数据集,下面对它进行下载:# 下载皮卡丘数据集root_url = ('https://apache-mxnet.s3-acceler...
2020-05-05 15:22:13
1358
1
原创 MXNET深度学习框架-27-微调(Fine-tuning)-迁移学习
众所周知,深度学习最重要的一个特性就是所需数据量大,一旦数据量比较小,而采用深度学习去训练的话,最终的结果只有一个:过拟合!但自己的数据集能达到上万的量吗?估计很少吧,就算有,也可能是斥巨资收集的吧。所以,为了应对这种情况,迁移学习(Transfer Learning)就被提出来了。它的主要思想是将从源...
2020-05-01 16:38:58
602
原创 MXNET深度学习框架-26-Hybridize:更快更好地移植
到目前为止我们所使用的全部是命令式编程,事实上我们用的大部分Python代码都是采用的命令式编程,比如下面这个例子:def add(x,y): return x+ydef func_add(A,B,C,D): E=add(A,B) F=add(C,D) G=add(E...
2020-04-29 15:35:43
864
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人