github

目标检测算法之SSD代码解析(万字长文超详细)

≡放荡痞女 提交于 2021-02-13 01:43:04
前言 前面的推文已经介绍过SSD算法,我觉得原理说的还算清楚了,但是一个算法不深入到代码去理解是完全不够的。因此本篇文章是在上篇SSD算法原理解析的基础上做的代码解析,解析SSD算法原理的推文的地址如下:https://mp.weixin.qq.com/s/lXqobT45S1wz-evc7KO5DA。今天要解析的SSD源码来自于github一个非常火的Pytorch实现,已经有3K+星,地址为:https://github.com/amdegroot/ssd.pytorch/ 网络结构 为了比较好的对应SSD的结构来看代码,我们首先放出SSD的网络结构,如下图所示: 可以看到原始的SSD网络是以VGG-16作Backbone(骨干网络)的。为了更加清晰看到相比于VGG16,SSD的网络使用了哪些变化,知乎上的一个帖子做了一个非常清晰的图,这里借用一下,原图地址为:https://zhuanlan.zhihu.com/p/79854543 。带有特征图维度信息的更清晰的骨干网络和VGG16的对比图如下: 源码解析 OK,现在我们就要开始从源码剖析SSD了 。主要弄清楚三个方面,网络结构的搭建,Anchor还有损失函数,就算是理解这个源码了。 网络搭建 从上面的图中我们可以清晰的看到在以VGG16做骨干网络时,在conv5后丢弃了CGG16中的全连接层改为了 和 的卷积层。其中

Python 量化投资实战教程(7) — 孕线真的有用吗?

我的梦境 提交于 2021-02-12 19:23:37
如上图就是所谓的孕线(harami)形态,也叫作子线跟随母线。两线长度差异越大,信号越强烈。 从技术指标层面来讲,在综合了其他指标(如20日均线、macd等)的情况下,孕线是比较可靠的反转信号。 从上图可以知道,孕线看涨信号主要由以下指标组成: 1.前一根K线的实体完全覆盖第二根K线 2.价格处于底部位置 今天我们就来试试用上述指标回测603186这只股票,看看效果如何。 为了简化问题,卖出信号由买入股票后涨10%或跌10%决定。 本文全部代码,请在Python实用宝典后台回复: 量化投资7 进行下载。或到Github获取: https://github.com/Ckend/pythondict-quant 1.基础版 该策略最大的难点在于如何判断价格处于底部位置。 我们第一版策略可以根据前三天的股价来判断是否处于底部位置。 如果股价连续三天下跌,第四天出现孕线上涨信号,则视为可买入信号。 对此股票使用该策略进行回测,时间是2010年1月1日至2020年8月15日,效果如下: 部分代码如下: 盈利9次,亏损10次,平均收益率1.3%,效果比较一般。 从中的买入点可以看到,该策略并没有准确地找到价格底部位置,许多买入点都在高点买入了。 2.优化版 为了解决高点买入的问题,我们需要合理的判断价格是否处于底部。 【连续多日下跌】这样的指标是无法判断价格所处的位置的。 相比之下

Spring事务传播机制

倾然丶 夕夏残阳落幕 提交于 2021-02-12 19:04:52
阅读文本大概需要3分钟 Spring管理的事务是逻辑事务,而且物理事务和逻辑事务最大差别就在于事务传播行为,事务传播行为用于指定在多个事务方法间调用时,事务是如何在这些方法间传播的。 下面以a.save()里调用了b.save()举例,事务方法之间调用时事务如何传播。 1 2 3 4 5 6 7 8 9 10 11 12 13 @Service public class A { @Autowired private B b; @Transactional (propagation=Propagation.XXX) public void save () { // ... b.save(); // ... } } 1 2 3 4 5 6 7 8 @Service public class B { @Transactional (propagation=Propagation.XXX) public void save () { // ... } } 1. REQUIRED 默认的spring事务传播级别,使用该级别的特点是,如果上下文中已经存在事务,那么就加入到事务中执行,如果当前上下文中不存在事务,则新建事务执行。 如下图: 由于两个方法属于同一个物理事务,如果发生回滚,则两者都回滚。 2. SUPPORTS 顾名思义就是可以支持事务,如果b.save()在事务环境中运行

A股回测“孕线”策略 — Python 量化投资实战教程(8)

橙三吉。 提交于 2021-02-12 19:00:57
上一篇系列文章 《Python 量化投资实战教程(7)—孕线真的有用吗?》 中我们讲到了孕线的形态和其基本的量化规则。 不过,当时只是基于一支股票对这个策略进行回测,数据量过少,其结果并不具有参考性。 今天,我们将在A股中抽取1000只股票,计算这些股票在2010年1月1日至2020年5月10日采用孕线策略的收益率。 本文完整源代码和数据均在开源代码仓库中: https://github.com/Ckend/pythondict-quant 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章: 超详细Python安装指南 进行安装。如果你用Python的目的是数据分析,可以直接安装Anaconda: Python数据分析与挖掘好帮手—Anaconda Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。 当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装 依赖模块 ,多舒服的一件事啊: Python 编程的最好搭档—VSCode 详细指南 。 在终端输入以下命令安装我们所需要的依赖模块: pip install backtrader pip install numpy pip

从零开始搭建后台管理系统(一)--创建SpringBoot项目

不打扰是莪最后的温柔 提交于 2021-02-12 18:58:42
最近我在搭建一个SpringBoot的后台管理系统,写到一半想起来博客好像很久很久没更新了,所以准备把这个项目的开发过程记录到博客系统里,这个系统现在已经集成了Mysql、Mybatis-Plus、Redis、Shiro、Druid、lombok。这个系统我开发了两个星期了,主要时间花在Shiro上了,现在Shrio使用Redis作为Catch和Session存储器,未来准备集成Kafka作为日志记录系统,把日志数据写到数据库里。 第一步我们要创建一个SpringBoot项目,我个人习惯使用IDEA,所以使用IDEA创建SpringBoot项目。 打开IDEA,点击File->New->Project。然后选择SpringInitializr,点next,配置项目信息。我自己本地装的还是JDK8,所以JavaVersion就选8。配置信息配置好之后,就要选择引用的包,我们到时候自己在pom文件里添加就行,继续next,配置项目名称。最后配置一下项目名称和创建地址,我们就搭建成了。 这个是项目的地址 https://github.com/Raindtop/Spring-Backstage,这个后台搭建的所有代码都在这里面。 来源: oschina 链接: https://my.oschina.net/u/4109273/blog/4952473

Python 量化投资原来这么简单(5) — A股回测KDJ策略

◇◆丶佛笑我妖孽 提交于 2021-02-12 18:52:26
许多技术投资方面的教材,经常会用几幅上涨的图来表明某些指标的用处,实际上那些上涨的图很可能只是假象。作者为了证明他所强调的指标的作用,选定了符合该指标策略的股票上升趋势图,但实际上这些策略并不一定适合全部股票,许多人被傻傻地骗了进去,血本无归。 因此,判断一个策略的好坏一定要有回测证据 。我们将在A股中随机抽取1000只股票,在2010年1月1日至2020年5月10日期间采用上回的 Python 量化投资原来这么简单(4) —KDJ 策略 进行交易,并计算得到其最终收益率 。最后看正收益与负收益股票的对比,基于此来判断该策略是否具有通用性。 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章: 超详细Python安装指南 进行安装。如果你用Python的目的是数据分析,可以直接安装Anaconda: Python数据分析与挖掘好帮手—Anaconda Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。 当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装 依赖模块 ,多舒服的一件事啊: Python 编程的最好搭档—VSCode 详细指南 。 在终端输入以下命令安装我们所需要的依赖模块

读写分离很难吗?SpringBoot结合aop简单就实现了!

纵饮孤独 提交于 2021-02-12 18:50:44
点击上方 " 程序员小乐 "关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Take chances, give everything, and leave with no regrets. 抓住机会,全心付出,不留遗憾的离开。 每日掏心 话 生命中遇到的每一个人都是有理由的,之前所有的错失与遗憾,都只是为了遇到最终那个对的人。 来自 : 鄙人薛某 | 责编:乐乐 链接:juejin.im/post/5ddcd93af265da7dce3271de 程序员小乐(ID:study_tech) 第 864 次推文 图源:百度 往日回顾: 如何使用 Nginx 优雅的限流 正文 前言 入职新公司到现在也有一个月了,完成了手头的工作,前几天终于有时间研究下公司旧项目的代码。在研究代码的过程中,发现项目里用到了Spring Aop来实现数据库的读写分离,本着自己爱学习(我自己都不信…)的性格,决定写个实例工程来实现spring aop读写分离的效果。 环境部署 数据库:MySql 库数量:2个,一主一从 关于mysql的主从环境部署,可以参考: https://juejin.im/post/5dd13778e51d453da86c0e6f 开始项目 首先,毫无疑问,先开始搭建一个SpringBoot工程,然后在pom文件中引入如下依赖: <

读写分离很难吗?SpringBoot结合aop简单就实现了

独自空忆成欢 提交于 2021-02-12 18:50:22
点击上方“ 方志朋 ”,选择“ 设为星标 ” 回复” 666 “获取新整理的面试文章 作者:鄙人薛某 juejin.im/post/5ddcd93af265da7dce3271de 前言 入职新公司到现在也有一个月了,完成了手头的工作,前几天终于有时间研究下公司旧项目的代码。在研究代码的过程中,发现项目里用到了Spring Aop来实现数据库的读写分离,本着自己爱学习(我自己都不信…)的性格,决定写个实例工程来实现spring aop读写分离的效果。 环境部署 数据库:MySql 库数量:2个,一主一从 关于mysql的主从环境部署,可以参考: https://juejin.im/post/5dd13778e51d453da86c0e6f 开始项目 首先,毫无疑问,先开始搭建一个SpringBoot工程,然后在pom文件中引入如下依赖: < dependencies > < dependency > < groupId > com.alibaba </ groupId > < artifactId > druid-spring-boot-starter </ artifactId > < version > 1.1.10 </ version > </ dependency > < dependency > < groupId > org.mybatis.spring.boot <

读写分离很难吗?springboot结合aop简单就实现了

故事扮演 提交于 2021-02-12 18:16:41
前言 入职新公司到现在也有一个月了,完成了手头的工作,前几天终于有时间研究下公司旧项目的代码。在研究代码的过程中,发现项目里用到了Spring Aop来实现数据库的读写分离,本着自己爱学习(我自己都不信…)的性格,决定写个实例工程来实现spring aop读写分离的效果。 环境部署 数据库:MySql 库数量:2个,一主一从 关于mysql的主从环境部署,参考地址: https://juejin.im/post/5dd13778e51d453da86c0e6f 开始项目 首先,毫无疑问,先开始搭建一个SpringBoot工程,然后在pom文件中引入如下依赖: < dependencies > < dependency > < groupId > com.alibaba </ groupId > < artifactId > druid-spring-boot-starter </ artifactId > < version > 1.1.10 </ version > </ dependency > < dependency > < groupId > org.mybatis.spring.boot </ groupId > < artifactId > mybatis-spring-boot-starter </ artifactId > < version > 1.3.2 </

GraphQL搭配MongoDB入门项目实战

浪尽此生 提交于 2021-02-12 18:15:32
什么是GraphQL GraphQL 是一种面向 API 的查询语言。在互联网早期,需求都以 Web 为主,那时候数据和业务需求都不复杂,所以用 RestAPI 的方式完全可以满足需求。但是随着互联网的发展,数据量增大,业务需求多变。还有各种客户端需要接口适配,基于 RestAPI 的方式,显得越来呆板,因此 GraphQL 便应运而生。它至少可以提供以下三个方面的优势 GraphQL 提供更方便的 API 查询 不同的客户端有时候需要返回的数据格式不同,之前使用 RestAPI 的方式,需要后端针对每一个客户端提供单独的接口。随着业务需求的增加,维护的成本随机呈指数级跃升。而使用 GraphQL 就比较开心了,只需要写一套接口即可 解决前后端过于依赖 在开发的过程中,前端需要和后端反反复复确认各个字段,防止到时候开发到一半,因为没有对好字段,要大块大块地改代码。现在有 GraphQL 就比较方便了,你需要什么类型的字段,就自己写对应的查询语法 节约网络和计算机内存资源 之前通过 RestAPI 的方式写接口,有一个很大的问题在于,对于接口的定义,需要前期做大量的工作,针对接口做各种力度的拆分,但即使这样,也没办法应对需求的风云突变。有时候需要返回的仅仅是某个用户的某一类型的数据,但不得不把该用户的其他信息也一并返回来,这既浪费了网络的资源,也消耗了计算机的性能。显然不够优雅