- 博客(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 2422
原创 模型部署之dll打包
本文主要讲解模型训练好后,怎么封装成dll接口,以供其他语言调用。神经网络框架以ncnn为例,其他框架大体思想都差不多,可以参考本文的思想,或者将模型转成ncnn,直接使用本文的教程亦可。 在打包前,首先需要明白打包的目标,如下: 1. 打包的文件。我们的目标是生成dll文件,如果仅仅将代码打包成dll,那么模型文件将会独立出来,从而打包好后
2020-05-20 11:12:16 6229 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 8070 4
原创 PaddlePaddle学习——模型训练及预测
本文主要介绍PaddlePaddle入门的模型训练及预测,重点在于掌握搭建模型及调用模型进行预测,网络结构以及预处理等调优不在本文关注的范畴。 运行环境:PaddlePalle 1.7.2 数据集:http://download.tensorflow.org/example_images/flower_photos.tgz  
2020-05-11 11:55:16 4491
原创 pytorch转ncnn及其测试
本文主要讲解pytorch转ncnn的过程,以及其推理结果的正确性测试。 其中,模型转换分为如下两步:1. pytorch模型转onnx模型;2. onnx模型转ncnn模型。 onnx(https://github.com/onnx/o...
2020-04-30 14:49:08 4229 4
原创 15.反转链表【代码的鲁棒性】
题目:输入一个链表,反转链表后,输出链表的所有元素。 Java代码如下(主要思路见注解):链接:https://www.nowcoder.com/questionTerminal/75e878df47f24fdc9dc3e400ec6058ca来源:牛客网public...
2018-09-08 11:32:09 319
原创 14.链表中倒数第k个结点【代码的鲁棒性】
题目:输入一个链表,输出该链表中倒数第k个结点。 遍历两次链表,代码如下:class Solution{public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k){ if...
2018-09-08 11:10:59 230
原创 13.调整数组顺序使奇数位于偶数前面【代码的完整性】
       题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。       思路一:借用vecto
2018-09-08 10:45:46 239
原创 12.数值的整数次方【代码的完整性】
题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 直接调用math库,代码如下:class Solution{public: double Power(double base, int expon...
2018-09-08 10:24:04 269
原创 11.二进制中1的个数【位运算】
题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 本题考查的是位运算,先大概回忆下位运算的基本概念。 1.算术左移和逻辑左移 算术左
2018-09-08 10:06:56 508
原创 10.矩形覆盖【递归和循环】
       题目:我们可以用2x1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2x1的小矩形无重叠地覆盖一个2xn的大矩形,总共有多少种方法?       思路如下图:      &nbs
2018-08-21 17:40:13 385
原创 9.变态跳台阶【递归和循环】
       题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。       思路:       因为n级台阶,第一步
2018-08-21 17:38:33 352
原创 8.跳台阶【递归和循环】
       题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。       思路如下:       1.假设当有n个台阶时有f(n)种走
2018-08-21 17:37:30 312
原创 7.斐波那契数列【递归和循环】
       题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39       思路:用循环,最好不要使用递归,此题递归空间代价极大。    &nb
2018-08-21 17:36:54 376
原创 6.旋转数组的最小数字【查找和排序】
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 &nbs...
2018-08-21 17:36:11 264
原创 5.用两个栈实现队列【栈和队列】
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 主要思想: 入队:将元素进栈A。 出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈;如果不为空,栈B直接出栈。 C++代码如...
2018-08-21 14:57:12 358
原创 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 226
原创 机器学习/深度学习知识点总结
机器学习/深度学习知识点总结       近期准备秋招,想把之前学过的一些知识总结一下,尽量言简意赅,主要围绕机器学习和深度学习,博客也搁置了一段时间了,以后会常常更新,记录学习,写博客不仅能总结知识,还能在写的过程中养成思考并查缺的习惯,其实有很多东西想写的,包括ML/DL/CV,近期做的人脸识别,还有一些刷题心得等,近期开始慢慢写吧QAQ…… &n...
2018-08-20 10:55:07 1525
原创 TDD设计模式写一个lite-struts框架
本文通过TDD设计模式实现一个简易的struts框架。 一. 什么是TDD设计模式? TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理...
2018-06-18 12:25:07 636
原创 3.从头到尾打印链表【链表】
       题目:输入一个链表,从尾到头打印链表每个节点的值。       C++代码如下:struct ListNode{ int val; s
2018-06-18 12:08:03 485
原创 2.替换空格【字符串】
       题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。       需要注意字符串的长度变化以及指针的遍历位置变化,
2018-06-18 12:07:19 270
原创 1.二维数组中的查找【数组】
       题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。      &
2018-06-18 11:58:07 358
原创 适配器模式实例:反向迭代器
一般来说,如果我们直接继承Iterable类,并覆盖iterator()方法,我们只能替换现有的方法,而不能实现选择。在这里,我们希望在默认的前向迭代器的基础上,添加一个反向迭代器,因此我们不能使用覆盖,而是添加一个能够产生Iterable对象的方法,该对象可以用于foreach语句,并可以实现反向迭代的功能。 当我们实现一个接口(前向迭代)并还需要另一个接口的某项功能(反向迭代)时,可
2017-08-25 13:35:46 550
原创 TensorFlow函数:tf.Session()和tf.Session().as_default()的区别
tf.Session():创建一个会话 tf.Session().as_default():创建一个默认会话 那么问题来了,会话和默认会话有什么区别呢?TensorFlow会自动生成一个默认的计算图,如果没有特殊指定,运算会自动加入这个计算图中。TensorFlow中的会话也有类似的机制,但是TensorFlow不会自动生成默认的会话,而是需要手动指定。 tf.S
2017-08-25 13:10:34 22998 2
原创 Java内部类实例:控制框架(e.g.温室控制系统)
应用程序框架(application framework)是被设计用来解决某类特定问题的一个类或一组类。要运用某个应用程序框架,通常是继承一个或多个类,并覆盖某些方法。在覆盖后的方法中,编写代码定制应用程序提供的通用解决方案,以解决你的特定问题。模板方法包含算法的基本结构,并且会调用一个或多个可覆盖的方法,以完成算法的动作。设计模式总是将变化的事物与保持不变的事物分离开,在这个模式中,模板方法是保持
2017-08-16 10:00:18 1091
原创 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 10281
原创 OpenCV之将图像拼装成视频
在上一篇博文中,http://blog.csdn.net/enchanted_zhouh/article/details/74289333 ,我们讲了怎样从一个视频中读取每一帧图像,在本文中,当我们对一个视频中的每一帧图像都进行了分析之后,想拼装成一个处理之后的视频以供展示分析成果,此时我们需要用到视频写入流VideoWriter这个方法。 VideoWriter写入图像到视频时, 需要
2017-08-14 20:01:32 5903 1
原创 String、char值相等比较
有时在写代码时会不小心在比较String与String值相等,char与char值相等时会没弄清楚”==”与equals()两种比较方法的区别就直接选一个用上了,最后在Debug时才发现以为是true的地方却是false,以为是false的地方却是true。写这篇文章只是为了记录平时写代码时可能会犯的一些小错误,如下先预先说明: String与String值相等比较用equals()方法
2017-08-14 19:21:19 57984
原创 栈的逆置
背景:栈中的元素是Integer类型, 从栈顶到栈底依次是 : 4,3,2,1 ,调用该方法后, 元素次序从栈顶到栈底变为: 1,2,3,4。注意:只能使用Stack的基本操作,即push,pop,peek,isEmpty,可以使用辅助栈。 首先明确思路:先写测试用例,再写逆置方法,预先写的测试用例通过则逆置方法完成。 一、根据需求先写测试用例(TDD设计模式)
2017-08-08 12:34:46 4437 2
原创 LeNet-5模型详解及其TensorFlow代码实现
本文先分析了LeNet-5模型的结构,然后基于LeNet-5模型写了TensorFlow代码实现mnist数字识别,代码部分进行了详细注解,目前也在学习阶段,有错误欢迎指出,大家一起学习。 LeNet-5模型结构图如下图: LeNet-5模型总共有7层。 第一层:卷积层 第一层卷积层的输入为原始的图像,原始图像的尺寸为32×32×1。卷积
2017-08-07 18:08:47 18395 38
原创 浅析C/S、B/S与P2P架构
一、C/S架构 C/S 架构是一种典型的两层架构,全称是Client/Server,即客户端/服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信。 比如:微信/客户端QQ等是基于C/S架构。 二
2017-07-25 18:56:48 18640
原创 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 808
原创 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 26870 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 45821 260
原创 《程序是怎样跑起来的》读书笔记
第一章,从功能方面来看,CPU的内部由寄存器、控制器、运算器和时钟四个部分构成,各部分之间由电流信号相互连通。程序是把寄存器作为对象来描述的,了解寄存器即可。第二章,数据是用二进制数表示的。计算机内部是由IC(Integrated Circuit 集成电路)这种电子部件构成的,IC的所有引脚,只有直流电压0V或5V两个状态。IC的一个引脚,只能表示两个状态。IC的这个特性,决定了计算机的信
2017-03-04 18:38:18 1006
原创 尾递归优化
1. 什么是尾递归?在计算机科学里,尾调用是指一个函数里的最后一个动作是一个函数调用的情形:即这个调用的返回值直接被当前函数返回的情形。这种情形下称该调用位置为尾位置。若这个函数在尾位置调用本身(或是一个尾调用本身的其他函数等等),则称这种情况为尾递归,是递归的一种特殊情形。尾调用不一定是递归调用,但是尾递归特别有用,也比较容易实现。尾调用的重要性在于它可以不在调用栈上面添加一
2017-02-26 18:19:41 761
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人