自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 模型部署之so打包

       上文(https://blog.csdn.net/Enchanted_ZhouH/article/details/106231338)主要讲解了将模型打包成dll接口库,本文将继续讲解将模型打包成so接口库,以供Android设备调用。       打包工具使用NDK,下载地址为:https://developer.android.google.cn/ndk/downloads,需要注意的是,新版的NDK不一定兼

2020-05-26 21:25:09 2382

原创 模型部署之dll打包

       本文主要讲解模型训练好后,怎么封装成dll接口,以供其他语言调用。神经网络框架以ncnn为例,其他框架大体思想都差不多,可以参考本文的思想,或者将模型转成ncnn,直接使用本文的教程亦可。       在打包前,首先需要明白打包的目标,如下:       1. 打包的文件。我们的目标是生成dll文件,如果仅仅将代码打包成dll,那么模型文件将会独立出来,从而打包好后

2020-05-20 11:12:16 6100 23

原创 ncnn模型加载的三种方式

       本文主要讲解ncnn模型加载的三种方式,模型以上文(https://blog.csdn.net/Enchanted_ZhouH/article/details/105861646)的resnet18模型为示例,模型文件如下:resnet18.param //模型结构文件resnet18.bin //模型参数文件       第一种方式:直接加载param和bin    &

2020-05-11 21:54:02 7924 4

原创 PaddlePaddle学习——模型训练及预测

       本文主要介绍PaddlePaddle入门的模型训练及预测,重点在于掌握搭建模型及调用模型进行预测,网络结构以及预处理等调优不在本文关注的范畴。       运行环境:PaddlePalle 1.7.2       数据集:http://download.tensorflow.org/example_images/flower_photos.tgz  &nbsp

2020-05-11 11:55:16 4463

原创 pytorch转ncnn及其测试

       本文主要讲解pytorch转ncnn的过程,以及其推理结果的正确性测试。       其中,模型转换分为如下两步:1. pytorch模型转onnx模型;2. onnx模型转ncnn模型。       onnx(https://github.com/onnx/o...

2020-04-30 14:49:08 4181 4

原创 15.反转链表【代码的鲁棒性】

       题目:输入一个链表,反转链表后,输出链表的所有元素。       Java代码如下(主要思路见注解):链接:https://www.nowcoder.com/questionTerminal/75e878df47f24fdc9dc3e400ec6058ca来源:牛客网public...

2018-09-08 11:32:09 310

原创 14.链表中倒数第k个结点【代码的鲁棒性】

       题目:输入一个链表,输出该链表中倒数第k个结点。       遍历两次链表,代码如下:class Solution{public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k){ if...

2018-09-08 11:10:59 222

原创 13.调整数组顺序使奇数位于偶数前面【代码的完整性】

       题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。       思路一:借用vecto

2018-09-08 10:45:46 233

原创 12.数值的整数次方【代码的完整性】

       题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。       直接调用math库,代码如下:class Solution{public: double Power(double base, int expon...

2018-09-08 10:24:04 259

原创 11.二进制中1的个数【位运算】

       题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。       本题考查的是位运算,先大概回忆下位运算的基本概念。       1.算术左移和逻辑左移       算术左

2018-09-08 10:06:56 488

原创 10.矩形覆盖【递归和循环】

       题目:我们可以用2x1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2x1的小矩形无重叠地覆盖一个2xn的大矩形,总共有多少种方法?       思路如下图:      &nbs

2018-08-21 17:40:13 375

原创 9.变态跳台阶【递归和循环】

       题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。       思路:       因为n级台阶,第一步

2018-08-21 17:38:33 342

原创 8.跳台阶【递归和循环】

       题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。       思路如下:       1.假设当有n个台阶时有f(n)种走

2018-08-21 17:37:30 301

原创 7.斐波那契数列【递归和循环】

       题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39       思路:用循环,最好不要使用递归,此题递归空间代价极大。    &nb

2018-08-21 17:36:54 361

原创 6.旋转数组的最小数字【查找和排序】

       题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。      &nbs...

2018-08-21 17:36:11 257

原创 5.用两个栈实现队列【栈和队列】

       题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。       主要思想: 入队:将元素进栈A。 出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈;如果不为空,栈B直接出栈。 C++代码如...

2018-08-21 14:57:12 351

原创 4.重建二叉树【树】

       题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。       递归版本一:class Sol...

2018-08-21 14:54:48 217

原创 机器学习/深度学习知识点总结

机器学习/深度学习知识点总结       近期准备秋招,想把之前学过的一些知识总结一下,尽量言简意赅,主要围绕机器学习和深度学习,博客也搁置了一段时间了,以后会常常更新,记录学习,写博客不仅能总结知识,还能在写的过程中养成思考并查缺的习惯,其实有很多东西想写的,包括ML/DL/CV,近期做的人脸识别,还有一些刷题心得等,近期开始慢慢写吧QAQ…… &n...

2018-08-20 10:55:07 1510

原创 TDD设计模式写一个lite-struts框架

       本文通过TDD设计模式实现一个简易的struts框架。       一. 什么是TDD设计模式?       TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理...

2018-06-18 12:25:07 627

原创 3.从头到尾打印链表【链表】

       题目:输入一个链表,从尾到头打印链表每个节点的值。       C++代码如下:struct ListNode{ int val; s

2018-06-18 12:08:03 469

原创 2.替换空格【字符串】

       题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。       需要注意字符串的长度变化以及指针的遍历位置变化,

2018-06-18 12:07:19 260

原创 1.二维数组中的查找【数组】

       题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。      &amp

2018-06-18 11:58:07 349

原创 适配器模式实例:反向迭代器

一般来说,如果我们直接继承Iterable类,并覆盖iterator()方法,我们只能替换现有的方法,而不能实现选择。在这里,我们希望在默认的前向迭代器的基础上,添加一个反向迭代器,因此我们不能使用覆盖,而是添加一个能够产生Iterable对象的方法,该对象可以用于foreach语句,并可以实现反向迭代的功能。       当我们实现一个接口(前向迭代)并还需要另一个接口的某项功能(反向迭代)时,可

2017-08-25 13:35:46 539

原创 TensorFlow函数:tf.Session()和tf.Session().as_default()的区别

tf.Session():创建一个会话       tf.Session().as_default():创建一个默认会话       那么问题来了,会话和默认会话有什么区别呢?TensorFlow会自动生成一个默认的计算图,如果没有特殊指定,运算会自动加入这个计算图中。TensorFlow中的会话也有类似的机制,但是TensorFlow不会自动生成默认的会话,而是需要手动指定。       tf.S

2017-08-25 13:10:34 22973 2

原创 Java内部类实例:控制框架(e.g.温室控制系统)

应用程序框架(application framework)是被设计用来解决某类特定问题的一个类或一组类。要运用某个应用程序框架,通常是继承一个或多个类,并覆盖某些方法。在覆盖后的方法中,编写代码定制应用程序提供的通用解决方案,以解决你的特定问题。模板方法包含算法的基本结构,并且会调用一个或多个可覆盖的方法,以完成算法的动作。设计模式总是将变化的事物与保持不变的事物分离开,在这个模式中,模板方法是保持

2017-08-16 10:00:18 1076

原创 TensorFlow函数:tf.nn.in_top_k()

tf.nn.in_top_k()函数的参数如下:in_top_k(predictions, targets, k, name=None)       predictions:预测的结果,预测矩阵大小为样本数×标注的label类的个数的二维矩阵。       targets:实际的标签,大小为样本数。       k:每个样本的预测结果的前k个最大的数里面是否包含targets预测中的标签,一般都是取

2017-08-15 21:51:54 10262

原创 OpenCV之将图像拼装成视频

在上一篇博文中,http://blog.csdn.net/enchanted_zhouh/article/details/74289333 ,我们讲了怎样从一个视频中读取每一帧图像,在本文中,当我们对一个视频中的每一帧图像都进行了分析之后,想拼装成一个处理之后的视频以供展示分析成果,此时我们需要用到视频写入流VideoWriter这个方法。       VideoWriter写入图像到视频时, 需要

2017-08-14 20:01:32 5874 1

原创 String、char值相等比较

有时在写代码时会不小心在比较String与String值相等,char与char值相等时会没弄清楚”==”与equals()两种比较方法的区别就直接选一个用上了,最后在Debug时才发现以为是true的地方却是false,以为是false的地方却是true。写这篇文章只是为了记录平时写代码时可能会犯的一些小错误,如下先预先说明:       String与String值相等比较用equals()方法

2017-08-14 19:21:19 57621

原创 栈的逆置

背景:栈中的元素是Integer类型, 从栈顶到栈底依次是 : 4,3,2,1 ,调用该方法后, 元素次序从栈顶到栈底变为: 1,2,3,4。注意:只能使用Stack的基本操作,即push,pop,peek,isEmpty,可以使用辅助栈。 首先明确思路:先写测试用例,再写逆置方法,预先写的测试用例通过则逆置方法完成。 一、根据需求先写测试用例(TDD设计模式)

2017-08-08 12:34:46 4374 2

原创 LeNet-5模型详解及其TensorFlow代码实现

本文先分析了LeNet-5模型的结构,然后基于LeNet-5模型写了TensorFlow代码实现mnist数字识别,代码部分进行了详细注解,目前也在学习阶段,有错误欢迎指出,大家一起学习。 LeNet-5模型结构图如下图: LeNet-5模型总共有7层。 第一层:卷积层 第一层卷积层的输入为原始的图像,原始图像的尺寸为32×32×1。卷积

2017-08-07 18:08:47 18338 38

原创 浅析C/S、B/S与P2P架构

一、C/S架构 C/S 架构是一种典型的两层架构,全称是Client/Server,即客户端/服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信。 比如:微信/客户端QQ等是基于C/S架构。 二

2017-07-25 18:56:48 18547

原创 TensorFlow之线性回归

通过tensorflow实现一个简易的线性回归,代码如下:import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt#定义训练数据train_x = np.linspace(-1,1,100)train_y = 3*train_x + np.random.randn(*train_x.shape)*0.3

2017-07-25 18:49:02 798

原创 OpenCV之从视频获取每一帧图像

当我们有一份视频,想对其做分析时,我们需要将其转化成每一帧图像,并对每一帧图像进行分析。       本文用opencv读取一段视频,并将视频中的每一帧图像保存到本地,opencv版本为3.2.0,代码如下:import cv2 videoCapture = cv2.VideoCapture()videoCapture.open('E:/video/1-1.avi')fps = videoCap

2017-07-04 10:04:03 26769 5

原创 TensorFlow之CNN图像分类及模型保存与调用

本文主要通过CNN进行花卉的分类,训练结束保存模型,最后通过调用模型,输入花卉的图片通过模型来进行类别的预测。       测试平台:win 10+tensorflow 1.2       数据集:http://download.tensorflow.org/example_images/flower_photos.tgz       数据集中总共有五种花,分别放在五个文件夹下。       一、C

2017-07-02 14:19:14 45673 260

原创 《程序是怎样跑起来的》读书笔记

第一章,从功能方面来看,CPU的内部由寄存器、控制器、运算器和时钟四个部分构成,各部分之间由电流信号相互连通。程序是把寄存器作为对象来描述的,了解寄存器即可。第二章,数据是用二进制数表示的。计算机内部是由IC(Integrated Circuit 集成电路)这种电子部件构成的,IC的所有引脚,只有直流电压0V或5V两个状态。IC的一个引脚,只能表示两个状态。IC的这个特性,决定了计算机的信

2017-03-04 18:38:18 988

原创 尾递归优化

1. 什么是尾递归?在计算机科学里,尾调用是指一个函数里的最后一个动作是一个函数调用的情形:即这个调用的返回值直接被当前函数返回的情形。这种情形下称该调用位置为尾位置。若这个函数在尾位置调用本身(或是一个尾调用本身的其他函数等等),则称这种情况为尾递归,是递归的一种特殊情形。尾调用不一定是递归调用,但是尾递归特别有用,也比较容易实现。尾调用的重要性在于它可以不在调用栈上面添加一

2017-02-26 18:19:41 738

原创 CPU,内存,硬盘,指令之间的关系

CPU,内存,硬盘,指令之间的关系

2017-02-26 00:44:20 754

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除