- 博客(36)
- 收藏
- 关注
原创 注意力机制在通道和空间中的融合应用(CBAM: Convolutional Block Attention Module)
摘要我们提出了一个对前馈神经网络十分有效的简单注意力模型。我们的注意力模型会关注feature map的通道和空间,之后模型输出的attention maps会与输入的特征图相乘。这个模型既轻量又通用,可以被加入到任何CNN中,并且可以一起与网络进行端到端的训练。简介最近的研究表明,深度(depth),宽度(width),基数(cardinality),这三个因素对CNN网络的表现最相关。从LeNet到Residual-style Networks,网络变得越来越深。VGG表明堆叠相同形
2022-02-15 21:03:38 8883 2
原创 注意力机制在通道上的应用 Sequeeze-and Excitation Networks
Sequeeze-and Excitation Networks注意力机制(Attention Mechanism)最初是应用在NLP上面的,计算机视觉发展到现在,注意力机制也被越来越多地应用在了CV领域。在这篇论文里面,作者把注意力机制应用在了通道层面,目的在于使得不同的特征通道拥有不同的权重大小,这样就能使得计算机能够有选择性地重视或忽视某些特征。通常来说注意力机制的实现是通过一个专门的网络来实现的,很明显这就会对计算增加成本。但是作者说,他所提出的这套方法,可以以最小的额外计算成本获得最大的收益,
2022-02-08 15:42:25 3139 1
原创 从零实现一个简单卷积神经网络
对于卷积公式可能有的人知道,可能有的人不知道,或者也仅仅只是知道而不理解。但是不管你知不知道这个公式的意义,都不影响你自己去实现一个卷积。他具体的数学意义,我先不讲,因为有很多人讲的都比我清楚透彻。而我要告诉你的,则是再卷积神经网络里面的卷积操作是如何实现的提到卷积神经网络,听到的最多的应该就是卷积,激活,池化这三个操作。就拿VGG16这个经典网络模型来说,其实就是通过卷积+激活+池化这三种操作堆叠而成的。那么他们具体是什么东西,又是如何实现的,这次就来用numpy手撸一下他们的具体实现原理。卷积
2022-02-07 19:00:56 11568 13
原创 从零实现一个简单神经网络(全连接层)
前向传播首先我们需要先确定一个公式其中W是我们的权重,X是我们的输入,b是偏置, σ是激活函数就拿最简单的两层神经网络来举例子,也就是由一个输入层,一个隐藏层,和一个输出层所组成的神经网络。在这个神经网络里,W也就是我们的隐藏层,X也就是输入层假设现在我们的输入X是一个1xN的一维矩阵假如我们需要实现0-9的手写数字识别功能,那么我们最后的输出就是0-9这十个数字的概率矩阵,也就是1x10的一个一维矩阵那么应该如何将一个1xN的矩阵变成1x10的矩阵呢。我们可以用一个10xN的矩阵,也就是隐
2022-02-06 22:44:14 2568 1
原创 获取数组(树)的最大深度(JS)
首先有一个数组,比如可以定义为这样的格式 var treeArr={ child:[ { name: 'a', child: [ { name: 'b', child: [ {name: 'd'}, { ...
2020-05-04 18:57:53 4382
原创 正则匹配不包含某表达式的字符串
/^((?!pattern).)*&/标题即答案,但是这句正则要怎么理解呢要想理解首先要先弄明白(?!pattern)这一运算符以下pattern就代表用户自己定义的表达式(?!pattern)正向否定预查(negative assert),在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如"Windows(?...
2020-03-15 00:23:14 731
原创 canvas作图系列——折(曲)线图
折(曲)线图折线图和曲线图最主要的地方就是获取到当前点以及下一个点的坐标值,只要有了这两个值,其他的都不是问题。canvas绘制曲线主要用的的是二次贝塞尔曲线和三次贝塞尔曲线二次贝塞尔曲线ctx.moveTo(20,20) //开始点坐标 ctx.quadraticCurveTo(20,100,200,20); //控制点坐标的xy和结束点坐标的xy三次贝塞尔曲线ctx.moveTo(...
2019-10-31 19:15:56 781
原创 canvas作图系列——气泡图
气泡图这里做的气泡图是柱形图的一种变体形式,但是基本思想其实差不多,只不过柱形的高矮换成的半径的大小,当然圆心的坐标也要随之改变,圆心的纵坐标要加上跟半径同比例的缩放系数才能保证圆的底部都在同一条水平线上图一function ybChart(data, index) { var dataMax = 0 for (let i = 0; i < data.length; i++)...
2019-10-31 18:45:09 1457
原创 canvas作图系列——柱图
柱图canvas画图最主要的就是把一张图分成各个部分,然后一块一块的去进行绘制,比如柱图,在绘制的过程中就可以分成x轴,x轴的label,y轴,y轴的label,平行于x轴的分割线,以及每个柱体等等和一些细节。柱图的x轴就是等分嘛,有几个数据就等分成几块,y轴就是先得出数据的最大值,然后看你想把这最大值均分成几份嘛,比如把1200分成4份,那y轴就是被均分成四份,每个刻度就是300还是要强...
2019-10-31 17:28:30 552
原创 canvas作图系列——仪表盘图
仪表盘图仪表盘其实也是环图的一种,但是比环图多的是一个指针,指针需要根据环图的进度调整位置,而这其中主要用到的就是canvas的旋转,但是注意的是canvas的旋转是以画布原点为旋转中心旋转的,因此,我们需要将旋转中心调整到我们需要的位置,再对画布进行旋转,要记得旋转完成之后,需要逆向旋转并平移复位,不然之后会错位的js有一点需要注意的是,如果其中有一段描边使用了ctx.setLineDa...
2019-10-31 16:21:06 1112
原创 canvas作图系列——环图
环图canvas制作圆形所用的方法是ctx.arc(x,y,r,0,Math,PI*2,false)其中的6个参数分别是圆心横坐标,圆心纵坐标,半径,起始角度,结束角度,false顺势针/true逆时针而圆环也是用的这个方法,只不过是ctx.fill()填充,替换成了ctx.stroke()描边,利用描边我们就可以绘制出任何大小及弧度的圆环了,通过ctx.linewidth可以设置描边的...
2019-10-31 15:53:03 1571
原创 前端跨容器的元素拖拽功能
之前用过一个vue的插件叫vue-slicksort,专门用来拖动元素的,但是只支持标签内拖拽,跨标签的拖拽暂时还不知道有没有这样的一款插件。自己动手丰衣足食,虽然这个是在vue环境下作的,但逻辑也都是原生js写的,所以vue还是其他什么框架的也都无所谓。html结构<template> <div class="hello"> <div class=...
2019-08-20 19:31:19 934
原创 计算最大公约数和最小公倍数
首先,要想计算最大公约数和最小公倍数,我们可以利用分解质因子的方式,获取两个数的所有质因子,而两个数的最大公约数是两个数相同的质因子的乘积,最小公倍数则是两个数的相同质因子的乘积再乘以他们各自特有的质因子。比如24和36这两个数,24的质因子是【2,2,2,3】,32的质因子是【2,2,3,3】。两个数的共同质因子是【2,2,3】,因此他们的最大公约数是2*2*3 = 12,两个数特有的质因子是...
2019-08-02 16:15:26 528
原创 计算表达式结果(支持带括号的加减乘除以及乘幂和小数运算)
以(1.22+((3.43+54.54)*8^3*9)-3*(2+4*2-1))/10+9^3这个表达式为例吧。首先先分析一下这个表达式,有括号,括号的优先级最高,其次有乘幂和乘除,应该是先算乘幂再算乘除,最后是加减。我们第一步要做的就是处理一下这个表达式,因为表达式是字符串形式的,因此我们要做的处理就是把数字项和运算符项依次放入一个数组中考虑到数字项有小数的情况,因此在字符转数字的是时候统一...
2019-08-02 11:01:25 1660
原创 C中利用指针交换两个变量值的一点误区
#include<stdio.h>void swap(int *a, int *b){ int t; t=*a; *a=*b; *b=t;}void main(){ int a, b; printf("输入两个整数:"); scanf("%d,%d", &a, &b); printf("结果是...
2019-07-28 23:00:36 739
原创 如何在本地启动https服务
准备工作下载一个openssl这个工具是用来生成证书的,普通的http协议不需要证书,而https协议需要有证书才能启动生成证书当你下完openssl并且为其配置好环境变量之后,在控制台中进入你的项目根目录然后在控制台中输入命令生成证书openssl genrsa -out privatekey.pem 1024然后继续输入命令生成签名openssl req -new -key p...
2019-06-10 22:34:09 8860
原创 Vue项目中微信浏览器页面刷新问题
运行在微信浏览器中的Vue项目,当需要用户主动对页面进行刷新时,会遇到如下问题:微信不支持location.reload()方法,在微信浏览器中会失效Vue中的路由跳转是类似于ajax局部刷新,因此使用location.href=‘xxx+时间戳’ 这种方法时,页面不会重载Vue自带的this.$router.go(0)无效history.go(0)无效通过后来的研究和学习,找到了一...
2019-04-08 17:18:15 5705
原创 解决IOS中的超出滑动问题
项目中遇到的一个小bug, 折磨了整整一下午遇到的问题就是:整体可以超出部分左右滑动,但是表体同样需要可以超出部分上下滑动,但是表头不能跟着上下滑动. 在安卓上没有任何问题, 可是在IOS上客户就反应了, 在整体左右滑动的时候, 手指放在表体上只能上下滑动, 左右滑动的功能无法实现, 想要左右滑动必须在表头上左右滑动才能实现下面粘一下html结构和css样式:<div class=...
2019-03-08 22:40:39 2762
原创 文字设置渐变色及加边框
<!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8"><title></title><style>div#gradient1 span { font-weight: bolder; -
2018-11-22 18:10:44 2341
原创 JS一键复制功能
<body><span id="selectable">点击后选中<br />点击后选中<br />点击后选中<br />点击后选中<br /></span><input type="button" onclick="selectText('se
2018-11-22 17:19:39 1210
原创 JS 实现网页截屏
要实现这个功能就必须要介绍一款特别好用的插件: html2canvas他的用法也特别傻瓜式只需要两行代码就可以实现网页截屏的功能html2canvas(document.body).then(function(canvas) { document.body.appendChild(canvas);});下面看例子这里我们的body标签高度是3023, 浏览器肯定是已经出现滚动...
2018-11-02 16:54:33 30760 2
原创 移动端页面切换小demo
纯无聊之作, 做着玩的<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable
2018-10-31 10:21:18 853
原创 几种基本的排序算法总结
准备函数 var arr = [] function swap(arr, a, b) { //交换函数 var temp = arr[a] arr[a] = arr[b] arr[b] = temp } function random_arr (){ //生成随机数组的函数 let long = Math.floor(Math.random()*100+1) for...
2018-10-29 13:51:20 247
原创 一个例子理解ES6新增的变量声明let
JavaScript中最常接触的一种变量声明的方式就是var, 我们都知道在JS中存在着预解析, name何为预解析呢, 就是当你在一个作用域中不管在什么位置声明一个变量的时候, 会把他放在JS最开始执行的位置, 也就是我们所说的变量声明提升当然, 函数也有变量声明提升并且优先级要高于变量, 但是我们主要介绍变量. 预解析是一把双刃剑, 有时会方便我们编程人员, 又是又会为我们带来一些麻烦, 而下...
2018-10-19 22:08:19 372
原创 微信小程序tabBar问题
在做微信小程序时, 发现底部导航栏无法显示, 其原因在于, app.json中的pages项的第一项, 必须要出现在tabBar的list配置项里面, 不管在list的什么位置, 只要存在就行...
2018-10-11 14:49:12 534
原创 Python中多线程的资源竞争及解决方案
首先要明确一点, Python中的多线程并不是真正地多个任务同步执行, 而是给每个任务分配一部分的执行时间, 轮流执行, 因此资源竞争的问题就会随之而来比如当有两个线程或者多个线程对同一全局变量同时操作时, 问题就会产生资源竞争产生的问题import threadingimport timedef add_a(count): global num print('a是'+...
2018-10-09 17:23:51 3793
原创 Python实现文件下载
在Python中要实现文件下载, 首先需要导入socket客户端客户端需要做的事情有:1 创建套接字2 连接到服务器3 告诉服务器想要下载的文件名4 接收从服务器返回的文件数据5 将文件写入到本地6 关闭套接字import socketdef main(): # 创建套接字 tcp_client = socket.socket(socket.AF_INET...
2018-10-09 14:53:49 2018
原创 求一元组中的最长递增子序列的长度(Python)
如一个元祖 (2, 1, 6, 4, 5, 7, 4, 2, 5, 6, 1, 3, 2, 5), 他的最长递增子序列有很多, 比如(1,4,5,7或者1,2,3,5), 他的最长递增子序列长度就是4解法(一)思路介绍:可以借助一个辅助数组来完成, 这个辅助数组的主要职责是, 记录遍历到当前数时, 以当前数结尾的元祖的最长递增子序列长度, 通过嵌套两层while循环, 第一层遍历元祖, 第二层...
2018-09-28 15:30:33 3439
原创 将某些正整数分解成若干个连续整数的形式
将某些正整数分解成若干连续整数的形式, 例如15=1+2+3+4+515=6+5+415=7+8某些正数不能分解为连续数的和,例如:16输入: 一个正整数N(0<N<10000)输出:整数N对应的所有分解组合, 按照每个分解中的最小整数从小到大输出,每个分解占一行, 如果没有任何输出, 则输出NONE思路介绍:for 循环遍历从n/2(向上取整)处开始从后往前遍历, 遍...
2018-09-27 21:56:48 2153
原创 Python中的单例模式
我们在使用class创建类的时候, 只会创建一个类对象, 但是, 当我们实例化这个类对象的时候, 一个类对象, 可以实例化出很多不同的对象, 而我们每次实例化出来一个对象, 就会在内存中重新分配一块空间, 而今天介绍的单例模式, 就是为了解决上述问题, 使得由一个类对象所实例化出来的全部对象都指向同一块内存空间.class A: passa = A()print('a对象所在的内存...
2018-09-26 10:41:37 5975
原创 计算一个只有乘法和加法的算术表达式的值,乘法优先,时间复杂度为O(N)
输入: 一个字符串, 只有0到9,还有和+,保证是合法的.输出:每个数字后, 打印出当前算术表达式的值例子:输入: 1+232+3输出:13244750这个题的大体思路就是, 首先要写一个方法, 这个方法能输出任意一个表达式的结果, 然后, 可以通过循环的方式, 将最终表达式的每一项一个一个拼接起来作为这个方法的入参, 方法的思路就是将这个表达式的每一项分割成为一个数组例如, ...
2018-09-20 16:28:05 3093
原创 Python中可变类型与不可变类型数据在内存中的引用
在Python中主要有两种数据类型, 一种是可变数据类型, 另一种是不可变数据类型不可变数据类型 数字型: int, float, complex, bool, long 字符型: str 元 祖: tuple可变数据类型 列表: list 字典: dict不可变数据类型不可变数据类型在第一次声明赋值声明的时候, 会在内存中开辟一块空间, 用来存放这个变量...
2018-09-20 13:54:21 2574
原创 JS中的this指向问题
this,被谁调用就指向谁在全局下的thisconsole.log(this) //这里的this是全局下的this, 因此这个this默认指向的是BOM的顶级对象window在函数中的thisvar fn = function() { console.log(this)}fn() //window这里的this是函数fn里的this,而fn函数是被...
2018-09-07 14:57:53 293
原创 JS删除对象中的某一属性(delete)
JS如何删除对象中的某一属性var obj={ name: 'zhagnsan', age: 19 }delete obj.name //truetypeof obj.name //undefined通过delete操作符, 可以实现对对象属性的删除操作, 返回值是布尔可以删除其他东西吗1.变量var name ='zs' //已声明的变量dele...
2018-09-06 15:58:44 110171 5
原创 求数组每列最大值
var arr=[ [1,2,5,9], [4,6,2,8], [2,5,7,4], [3,7,8,1], [0,4,1,2] ]; //创建一个空数组,用来接收每一列最大数所在的行数 var hang=[]; //创建一个数组,用来存...
2018-08-16 17:26:31 2067
原创 关于react-router中的Prompt组件学习心得
在最近的react项目中, 遇到了一个需求, 点击图片的时候, 会出现一个大图预览, 其实就是一个遮罩层, 专门用来显示大图的, 但因为是一个APP, 所以难免会有用户点开大图后, 不用正常的关闭按钮关闭大图遮罩层, 而是点击手机的返回键,这样就会造成页面后退, 而不仅仅只是关闭遮罩层了, 所以在此, 我决定使用react-router里的Prompt组件Prompt组件作用该...
2018-08-10 13:22:04 12023
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人