- 博客(47)
- 资源 (11)
- 收藏
- 关注
原创 一文带你解决Git那些事~ git 指令 实用指南
Git是目前世界上最先进的分布式版本控制系统。虽然日常中最多的在上面找项目代码...... Git有非常完善版本控制流程,适合团体和个人的开发,提升开发效率,企业开发必备!日常使用的时候可能接触更多的是 github、或者国内的gitee等网站,这些都是部署在不同服务器的Git服务。因为 Git 定义是一个系统,所以不同公司的 Git 使用都是符合标准的,但是因为存在数据安全的问题,公司一般会在自己的服务器上部署Git服务。当然还有更多更多的介绍信息和复杂功能,本文主要介绍经常使用的代码工程...
2021-11-13 10:39:50 11756
原创 mmdetection2.0 配置 训练自己的数据集 和 验证出错的问题
在ubuntu下安装mmdetection只要按照官方教程就好了,基本没有问题。训练自己的数据集的时候需要注意以下几点: 不同于1.x版本,2.x版本所给出的模型大多为嵌套调用的方式,而1.x多为给定好模型。故选取好模型之后,只要按照其py文件里说明,按照步骤不一级一级的往下找就好了,而且由于这种嵌套方式,voc格式的完全只需要修改其中代表dataset部分的路劲即可,可移植性更强了,当你确定好某个模型只有,依旧可以模范1.x的方式,将需要的几个部分写在一个文件里面,更加便于自己...
2020-06-11 17:44:04 25009 4
原创 一文彻底解决 双线性插值 的数学推导和实际应用
插值法是一种根据原图(source)图片信息构造目标图像(destination)的方法。常用在传统图像处理以及神经网络中的上采样。例如此处我们需要将3×3的单通道图片扩展为4×4的单通道图片,此处数值应该视为对应像素的像素值,后面数学推导中的坐标,应视为像素的中点,而不是边界角点。毕竟是有几何关系中的相似,由比例关系得: ...
2020-05-19 21:08:24 21248 1
原创 基于MATLAB的线激光三维彩色扫描仪
暑期做的一个项目,开始并不是很熟悉,在网上查找的资料也不是很具体,但是自习学习了理论知识之后还是比较容易的做出来这个项目,现在开源整个项目,由于篇幅有限,本文适合稍微有点点基础的朋友。先显示下最后结果:一、硬件设计主要有步进电机(建议精度高点,这涉及到后面的精确度问题,一般42电机即可)、步进电机驱动、彩色相机、一字型激光头、arduino、各部分的供电单元;基本的...
2019-08-07 22:30:04 27336 106
原创 Transformer Pytorch复现
贴一个自己根据原论文已经参考众多项目的一个transformer复现:import torchimport torch.nn as nnfrom torch.nn import functional as Fclass PositionalEncoding(nn.Module): def __init__(self, din, max_len=5000): super().__init__() self.dropout = nn.Dropout(p=0.
2022-05-11 20:06:15 843
原创 【推荐算法 学习与复现】-- 深度学习系列 -- AFM
文字越多好像不一定就能更好的解释清楚,试试从简说明,读者觉得清晰的可以点个赞反馈下~~~AFM模型的总体定义如下:一阶特征部分:用一层线性回归即可实现!二阶特征交叉部分:Embedding layer:常用操作,无需多言;沐神说Embedding就是做个MLP的映射Pair-wise Interaction Layer: 和 NFM 中部分内容相同,FM模型基本都有该步骤,前述FM中仅仅需要最终求和...
2022-05-01 17:35:05 1562
原创 【推荐算法 学习与复现】-- 深度学习系列 -- NFM
和前面的模型结构上都是大差不差的,但是FM归根结底还是个二阶特征交叉的模型,NFM在在Embedding层后添加 特征交叉池化层 用于对 Embedding向量两两计算元素积操作,并对交叉特征向量求和,得到池化层的输出向量。(可能描述不清楚,可以参考下面论文给出的计算过程)再把该向量输入上层的多层全连接神经网络,进行进一步的交叉。对比前面的DeepFM模型,讲二阶特征交叉部分由并行结构改为了串联的结构,DNN在二阶交叉特征进行进一步交叉,而DeepFM是二阶交叉特征 + 一阶特征DNN,...
2022-04-29 17:29:18 1227
原创 【推荐算法 学习与复现】-- 深度学习系列 -- DeepFM
整体内容和前面相似,FM部分二阶交叉部分数学原理参考如下:简单理解FM公式 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/354994307class FM(nn.Module): def __init__(self, num_embeddings, embedding_dim): super().__init__() self.embedding_dim = embedding_dim s...
2022-04-28 20:36:31 1215
原创 【推荐算法 学习与复现】-- 深度学习系列 -- Deep&Cross
DeepCross模型整体内容思想是和WideDeep保持一致的, 尤其是Deep部分基本一致, 但是将原先单线性回归的Wide部分替换为Cross网络,增加特征之间的交互力度. 论文总体结构如上图所示, DCN(论文中的叫法)模型从Embedding和Stacking层开始,然后是并行的Cross网络和Deep网络,最后是将两个网络的输出组合在一起的Stacking层和输出层。图示很清楚的表明了模型结构, 配合原论文 第二章一起食用更佳~争对 Cross Netwo...
2022-04-24 20:50:42 1186
原创 【推荐算法 学习与复现】-- 深度学习系列 -- Wide&Deep
WideDeep 模型是Google在2016年提出的,在业界具有非常大的影响力,模型由单层Wide部分和多层的Deep部分组成的混合模型。Wide 体现 “记忆能力” 主要是模型直接学习并利用历史数据中物品或者特征的“共现频率”能力。而Deep部分体现 “ 泛化能力 ” 主要是根据特征发掘甚至从未出现过的稀有特征与最终标签相关性的能力。 再简单理解就是Wide部分采用简单的线性回归模型,直接发掘了历史数据的分布规则,例如针对成对出现的特征; 而Deep部分则是通过深层的神经网络发...
2022-04-23 21:09:57 1279
原创 【推荐算法 学习与复现】-- 深度学习系列 -- PNN
目录原理介绍 代码复现:数据下载链接:Product Layer 代码如下:PNN 代码如下:完整工程:参考:原理介绍: 论文中原图乍一眼看上去和 DeepCrossing 很像,都是多特征的输入、具有Embedding层、多层的神经网络、以及最终预测的都是CTR指标;唯一的区别也是很容易发现的,就是 PNN模型用Product Layer 替换了 DeepCrossing 的 Stacking;相比较下,Stack...
2022-04-23 14:31:20 1249
原创 【推荐算法 学习与复现】-- 深度学习系列 -- NeuralCF
背景故事: 《深度学习推荐系统》中在介绍这一部分的内容时,给的标题是: 从深度学习的视角重新审视矩阵分解模型。个人觉得这句话非常非常精准,哈哈哈。。。LFM作为CF的实现方法一种,根据 user-item 关系矩阵,找到表征 用户特征、物品特征的隐向量,再通过 内积 的计算方式确定用户和物品直接的关系(相似度?)。这里面主要有两块内容,第一是求解隐向量(或者说描述用户和物品的特征向量?);第二是用户和物品之间关系的求解。LFM 争对这两部分给出了比较...
2022-04-22 20:30:18 1195
原创 【推荐算法 学习与复现】-- 深度学习系列 -- DeepCrossing
类别型特征可以通过one-hot 或者 multi-hot 编码生成特征向量,数值型特征可以直接作为特征向量。 Deep Crossing 模型完整解决了从特征工程、稀疏向量稠密化、多层神经网络进行优化目标拟合等一些问题,可以将各类业务数据特征带入模型;总体来看Deep Crossing解决了:通过Embedding 解决了某些离散型特征编码过于稀疏化的问题 神经网络解决了特征自动交叉组合的问题 输出层直接对 CTR 进行预估网络的各部分在现在看来都很常见和合理,但是在开始的时...
2022-04-19 20:32:55 833 2
原创 【推荐算法 学习与复现】-- 深度学习系列 -- AutoRec
个人简单理解 AutoRec 模型就是利用神经网络模型来实现矩阵分解的过程,数学表达上和LFM 隐语义模型很类似。假设图中蓝色神经元代表的为 k 层单隐藏层,图中 的 V M 分别代表输入到隐藏层、以及隐藏层到输出的参数矩阵,用数学表达形式就是:其中,f() 和 g() 为输出层、隐藏层的激活函数。 其实从形式上来看,假设输入层维度为 n×m n表示batchsize,不考虑偏置项,第一层参数的维度为 m × k, 第二层参数的维度为 k × m,输入特征经过编码...
2022-04-19 19:57:22 514
原创 BCELoss() RuntimeError: the derivative for ‘target‘ is not implemented
解决方案见最后。。。。。。。。。。。。。。最近复现模型的过程中,因为有段时间没有写工程了,非常生疏。写的过程漏洞百出,碰到这个问题,主要是利用 torch.nn.BCELoss( ) 计算损失的时候出现。for iter, (feas, labels) in enumerate(train_dataloader, 1): optimizer.zero_grad() # 1. 正向 outputs = model(feas) ...
2022-04-19 13:14:59 1459 5
原创 【推荐算法 学习与复现】-- 逻辑回归算法族 -- GBDT+LR
协同过滤仅仅使用有限的用户行为信息,逻辑回归算法模型大多引入用户行为、用户特征、物品特征和上下文特征等,从CF逐步过渡到综合不同特征的机器学习模型。(1)逻辑回归模型将用户特征(年龄、性别等)、用户行为(收藏、浏览等)、物品特征(属性、描述等)和上下文特征(当前时间、地点等)转化成数值型特征向量;以点击率为优化目标;利用已有数据进行训练学习模型参数;利用学习完成的模型进行推理预测用户点击率。(2)POLY2模型--特征交叉的开始防止“辛普森悖论”(数据...
2022-04-16 21:24:29 1131
原创 【推荐算法 学习与复现】-- 逻辑回归算法族 -- LR
协同过滤仅仅使用有限的用户行为信息,逻辑回归算法模型大多引入用户行为、用户特征、物品特征和上下文特征等,从CF逐步过渡到综合不同特征的机器学习模型。(1)逻辑回归模型将用户特征(年龄、性别等)、用户行为(收藏、浏览等)、物品特征(属性、描述等)和上下文特征(当前时间、地点等)转化成数值型特征向量;以点击率为优化目标;利用已有数据进行训练学习模型参数;利用学习完成的模型进行推理预测用户点击率。代码编写原理参考大多参照《深度学习推荐系统》书籍内容,原理见后面附...
2022-04-16 21:12:35 1192
原创 【推荐算法 学习与复现】-- 协同过滤算法族-- LFM
基本介绍:协同过滤算法(Collaborative Filtering),数据来源一般为用户的行为数据,不包含用户与物品本身特征信息,从物体相似度和用户相似度出发,分为Item-CF和User-Item。为了处理稀疏共现矩阵、增强模型泛化能力,衍生出矩阵分解模型。(2)矩阵分解对应的针对前述稀疏问题采用矩阵分解技术(Matrix Factorization, MF),使用更稠密的隐向量表征用户和物品,用户和物品的隐向量是通过分解协同过滤生成的共现矩阵得到的...
2022-04-15 19:42:39 1371
原创 【推荐算法 学习与复现】-- 协同过滤算法族-- ItemCF
基本介绍: 协同过滤算法(Collaborative Filtering),数据来源一般为用户的行为数据,不包含用户与物品本身特征信息,从物体相似度和用户相似度出发,分为Item-CF和User-Item。为了处理稀疏共现矩阵、增强模型泛化能力,衍生出矩阵分解模型。(1) 协同过滤基于近邻的模型,根据用户还是物品分为 User-CF 和 Item-CFUser-CF:由行为数据找到相似用户,拿到相似用户的喜好物品作为候选,由用户相似度和其对为物体评分情况排序,对物品打分Ite...
2022-04-15 19:19:00 344
原创 【推荐算法 学习与复现】-- 协同过滤算法族-- UserCF
基本介绍:协同过滤算法(Collaborative Filtering),数据来源一般为用户的行为数据,不包含用户与物品本身特征信息,从物体相似度和用户相似度出发,分为Item-CF和User-Item。为了处理稀疏共现矩阵、增强模型泛化能力,衍生出矩阵分解模型。(1) 协同过滤基于近邻的模型,根据用户还是物品分为 User-CF 和 Item-CFUser-CF:由行为数据找到相似用户,拿到相似用户的喜好物品作为候选,由用户相似度和其对为物体评分情况排序,对物...
2022-04-15 19:08:37 476
原创 线激光扫描三维重建 平移装置 光平面标定
平移线扫重建 matlab代码,包含相机标定、光平面标定与方案、移动装置标定与方案、激光线条中心线自适应亚像素提取、畸变矫正、三维重建、点云滤波等部分,代码按模块编写,注释完整,附带一份完整苹果表面扫描数据,处理277张300w像素图片仅耗时15秒,测量精度0.1mm。
2022-03-07 11:01:09 27406 1
原创 解析 XML预测结果 至 TXT文件
import xml.etree.ElementTree as ET import osdef parse_rec(filename): tree = ET.parse(filename) # 解析读取xml函数 objects = [] img_dir =[] for obj in tree.findall('object'): obj_struct = {} obj_struct['name'] = obj.find('name.
2021-04-15 08:52:34 178
原创 二叉树 几种遍历方式下的 序列化和反序列化
二叉树的 序列化与反序列化 是一个很有趣的问题,假设树的结构如下序列化:使用 # 代表 空指针 nullptr , ( ) 表示子树的划分,序列化中不存在.此处我采用的序列化为例如前序遍历"1,2,#,4,#,#,3,#,#"前序遍历: 1 (2 # 4 # #) (3 # #)中序遍历: (# 2 # 4 #) 1 (# 3 #)后序遍历: (# # # 4 2) (# # 3) 1层序遍历: 1 2 3 # 4 # # # #前序、后序、层序都能够很好的找到...
2021-04-07 19:51:43 459 1
转载 C++ 智能指针
转载!原作者介绍的太完整了,转载完全为了给自己做个笔记,侵权删https://www.cnblogs.com/wxquare/p/4759020.html目录 理解智能指针的原理 智能指针的使用 智能指针的设计和实现 1.智能指针的作用C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易...
2021-03-24 22:46:17 191
原创 Leetcode234 回文链表
虽然是一道简单题,但是综合性太强了,设计到链表里面很多技巧与操作。1、回溯法/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(
2021-03-22 20:34:50 167
原创 opencv cv2 python RGB BGR 颜色表 配色
见链接,注意给定是RGB的,所以想直接用到opencv注意反过来使用即可。https://tool.oschina.net/commons?type=3
2021-01-12 21:55:29 8160 1
原创 conda新建环境错误 CondaHTTPError: HTTP 000 CONNECTION FAILED for url
最近在conda下 新建 python环境 时候 然后出现上述问题,一直新建不了,查询得到的换源啦,https改为http等都没有work,很奇怪,这个时候找到stackflow上解法,简单粗暴好用。CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/win-64/current_repodata.json>Elapsed: -An HTTP error occ
2020-12-08 21:25:48 1678 2
原创 VIA coco数据集 转 图片标注 语义分割 实例分割
使用VIA或者其他标注软件标注的多边形轮廓,生成COCO格式之后,如果用到语义分割模型,常常需要转换为图片格式的标注label,网上没有找到比较合适的软件,自己改写了一个,基本能够实现这样功能,试用于所有图片标注在一个json文件中的格式,例如VIA标注软件的生成结果。import osimport numpy as npimport jsonimport PIL.Imageimport PIL.ImageDrawfrom tqdm import tqdmdef shape_to...
2020-11-16 10:26:52 1323
原创 虹软 ArcFace 3.0 人脸识别SDK C++ 编译运行 与 部分问题处理
最近看有趣的开源项目,选择了虹软的人脸识别SDK,按照官方的教程走,还是遇到很多坑,主要有以下的内容:确定好SDK的平台,对于win用户需要确定 x64 还是 x86,这个很重要申请下载到文件后,文件目录如下:demo 提供了演示的内容,doc里有说明文档,其余都是头文件与以来的动态库,后面会用到,开始添加文件的步骤可按照doc里面的 3.1 工程配置部分 (注意:里面有讲到拷贝一些头文件与动态库至相应文件夹,我下载的x64版本默认都已经放进去了,若没有则根据要求添加即可!)配.
2020-10-17 22:46:52 1789 9
原创 单链表的一些操作
// Copyright: AHNUer// Author: Huang// Date:2020-09-27// Description:some functions about Linklist#include <iostream>using namespace std;typedef int datatype;typedef struct LNode { datatype data; struct LNode* next;}LNode, *LinkLi.
2020-09-27 16:59:09 154
原创 mmsegmentation 训练自己的数据集
MMSegmentation是一个基于PyTorch的开源语义分割工具箱。它是OpenMMLab项目的一部分。github仓库:https://github.com/open-mmlab/mmsegmentation官方说明文档:https://mmsegmentation.readthedocs.io/配置他的使用和 OpenMMLab 中 mmdetection 类似,在确定好需要的模型之后,按照其py文件里说明例如 deeplabv3plus_r50-d8_512x512...
2020-09-24 17:04:49 6476 3
原创 GDB常用的调试指令
生成符合GDB调试要求的可执行文件root@AliCloud:~/c++# gcc demo.c -o demo.exe -groot@AliCloud:~/c++# gdb demo.exe启动GDB调试器 调用GDB调试器的方法有4种:(1)直接使用gdb指令启动GDB调试器,需启动后借助 file 或者 exec-file 命令指定root@AliCloud:~/c++# gdb(2)调试尚未执行的程序root@AliCloud:~/c++# gdb ...
2020-09-15 15:51:08 462
原创 C++ 计算字符串的相似度 (编辑距离)的回溯算法 与 动态规划算法
编辑距离 编辑距离指的就是,将一个字符串转化成另一个字符串,需要的最少编辑操作次数(比如增加一个字符、删除一个字符、替换一个字符)。编辑距离越大,说明两个字符串的相似程度越小;相反,编辑距离就越小,说明两个字符串的相似程度越大。对于两个完全相同的字符串来说,编辑距离就是 0。 根据所包含的编辑操作种类的不同,编辑距离有多种不同的计算方式,比较著名的有莱文斯坦距离(Levenshtein distance)和最长公共子串长度(Longest common substring ...
2020-09-10 12:22:06 3563
原创 01背包问题 回溯法 与 动态规划 两种方案的求解
0-1背包问题是个很经典的问题,规模较小时常用回溯法来类似于枚举的方法进行所有的选择方案的求解,但是由下图显而易见,这个过程中进行了很多次重复性的计算,故完全可以用动态规划的方式,利用状态转移表提前计算中间过程,空间换时间的方式。1、回溯法 该方法理解较为容易,主要依靠上述的图,不断走所有的决策路径,找到需求的最大值。开始先不断递归到最大深度,此时什么都不装,是上述图中第一个叶子结点的状态,计算此时的状态,并作为最大的价值,然后回溯,装进去第i个物品,计算...
2020-09-08 17:05:32 2662
原创 Leetcode 单链表反转
单链表反转问题有很多好的处理方法,做题的时候看到一种很好的解决思路。新建三个指针分别为 pre、cur、next 。pre作为新建链表的头指针,cur作为当前待转移元素的指针,next作为除待转移元素以为,剩余元素的头指针三个指针设置的很合理,分别对应有效的位置,避免丢掉链表的位置。其中next是在cur不为NULL这一条件成立才会创建。如果采用循环外创建,循环内使用 next = next -> next 这样的方式更新指针。此时next达到NULL时,cur仍然满足循环条件,此时.
2020-09-03 20:01:33 159
原创 Leetcode142. 环形链表 II 分析与解答
关于链表中是否存在环形列表的问题,可以查看超链接,关于环形列表连入位置的问题,可见下述分析图 上图结论可以看出来,如果在两节点相遇后,一个新的指针从A走到B,所需要的步数,刚好能让另一个指针从C走到B,n-1表示走了 n - 1 圈,此时不管走多少圈,因为有c的存在,最终肯定是走到了B点,故刚好两个新指针重合,这也是循环终止的标准,具体代码见下面了:class Solution {public: ListNode *detectCycle(ListNode *head) { ..
2020-09-02 19:18:44 226
原创 Leetcode报错:runtime error: member access within null pointer of type ‘ListNode‘ (solution.cpp)
Leetcode检测链表是否有环的问题中遇到这个问题,开始的时候是我把链表理解错误,初始化快慢指针的时候,是将头结点赋值给新建指针,即新建快慢指针是与头指针一样指向第一个数,而非是指向头结点(初学导致理解错误),这样分析一下代码就能修改正确了。开始写的代码如下:class Solution {public: bool hasCycle(ListNode *head) { if (head == NULL) return false;
2020-09-02 16:48:30 1700
原创 C++ 快速排序
快排有点类似于归并排序,但是它是先按照大小分好组,再排序,而非归并是先分解,排序再合并部分。开始先随机找个数,通过原地交换,使得该值左边全小于它,右边大于它。不断递归过程中进行排序过程。快排由于中间存在交换操作者,故为非稳定排序,但是其实原地排序,空间复杂度为O(1),其时间复杂度最差O(n^2),一般O(nlogn)。其整体流程 和 单步过程如下:整体流程:void __quick_sort(int* arr, int left, int right) { if (lef
2020-08-18 17:05:20 534
原创 C++ 归并排序 含哨兵与不含哨兵 写法
归并排序利用分治思想,通过不断的用递归将大问题化解为小问题,是一种稳定的排序算法,时间复杂度为O(nlogn),但是由于开辟了额外的空间,空间复杂度为O(n)。在代码实现部分,分解部分利用递归的方法,不是很难实现,合并部分是关键,普通未引入哨兵代码需要考虑到边界问题,但是引入哨兵,能够更加简化代码。不含哨兵:void __merge(int* arr, int left, int mid, int right) { int i = left, j = mid + 1, k = 0;
2020-08-18 16:13:14 553
原创 Clion编译器中 建立多目录工程的 CMakeLists写法
Clion编译器是个非常优秀的开发环境,比较喜欢JetBrains的风格,而且在校学生通过邮箱验证是可以免费获得激活的。之前做过较大点的项目时会遇到多文件或者多目录的工程,这是合理的进行目录划分会增强可读性的。常用的一个做法是将自建的 头文件和 库文件分目录放置,这样符合工程管理的习惯,或者将某一头文件与其对应源文件放置到同一个目录下,下面从分别是两个方式的文件目录和CMakeLists的写法,亲测有效!1、头文件和 库文件分目录放置 cmake_minimum_r...
2020-08-06 15:24:37 3198 1
通讯录管理系统 基于 c/c++ 结构体设计
2020-07-01
相机标定助手.rar
2020-05-21
相机标定助手.rar
2020-05-16
两个Uploader.rar
2020-03-18
基于MATLAB的线激光光平面标定.rar
2020-03-06
BP神经网络的预测Matlab程序
2019-01-20
最新全国高校数据库信息(包含2854所高校)
2019-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人