简历项目

138 阅读4分钟

fast-RCNN

  • mlp

以手写数字识别为例子

神经元:装数字的容器0-1

将一个手写数字分为28*28的大小的神经元组合(784),神经元中的数值代表着灰度,0为黑,1为白

这个数值叫做激活值,这784个神经元组成了mlp的第一层

最后一层代表0-9的数字,激活值也在0-1,代表着是这个数字的可能性

中间部分叫做隐含层,黑箱,进行一些识别数字的具体工作

假设选择两个隐含层,每层16个神经元(乱选的),上一层的激活值决定下一层激活值。。怎么算是关键。。

理想情况下,我们希望倒数第二层神经元代表数字的各个笔画,比如9的话,倒数第二层希望能点亮圆圈和竖线

所以从第三层到最后一层 我们只需要学出来哪些笔画组合能组成哪个数字就行

第二层则是把各个笔画拆成更小的部分

那么到底怎么又第一层激活值得到第二层的激活值呢?

引入激活函数:

image.png

权重代表每一条神经的影响能力

加入我想设置加权和大于10的时候点亮,那么就设置一个偏置,最终激活函数输入如下

image.png

第二层的每个神经元都和第一层的784连起来,每条神经上都带一个权重,并且每个神经元都带一个偏置

image.png

image.png

如何设置这一坨数字才能满足结果

image.png

image.png

那我们如何获得这些参数呢?

代价函数:用来告诉系统你训练出来的结果是垃圾还是可用的!

可以简单设置为(最后一层得到的激活值-目标值)^2再求和,目标让他最小

反向传播通过导数链式法则计算损失函数对各参数的梯度,并根据梯度进行参数的更新,

最后使得代价函数最小

  • RCNN 识别加定位

image.png

-fast-RCNN

image.png

  1. 在图像中确定1000-2000个候选框(选择性搜索)

  2. 将整张图片输进cnn,获取特征图

  3. 找到每个候选框再特征图上的映射,并将这个映射作为每个候选框的卷积特征输入到池化层 image.png

  4. 对候选框中提取的特征使用分类器判别是否属于一个特征类。

  5. 对于属于某一特征的候选框,用回归器进一步调整其位置。。

web项目

基于golang和gin框架搭建了一个论坛项目。实现了用户注册功能,其中使用了雪花算法去生成用户id,使用md5对密码进行加密,然后插入到数据库。还实现了用户登录功能,对传入的用户名密码到数据库里对比,如果相同,返回一个jwt,并把这个token给到前端。同样实现了社区创建,贴子发布,点赞排序的等功能。使用的validater库进行参数校验,使用zap日志库进行日志记录,实现了优雅关机等。。

第一步是加载配置信息,通过viper配置管理器,读取yaml文件里的配置信息,并把它反序列化到变量里,并且通过viper实时监控配置文件,如果配置文件变动了,及时的修改变量信息。 第二部呢就是初始化日志。我在这个项目里使用了uber开源的zap日志库。程序发布到线上我们需要日志来了解他的状态。构造我们自己的ginlogger和recovery来接收日志,recover掉项目可能的panic并使用zap记录相关日志。

第三步初始化数据库连接,使用sqlx连接mysql ,先读取cfg中的mysqluser,password,段楼,host等信息,在调用sqlx.connect函数,ridis调用go-redis连接

第四步注册路由,把之前写的ginlogger和recovery,加入到新注册的路由里。

第五步 优雅关机 开启一个gorutine监听启动的端口,新建一个channel其接收关机信号,收到信号的时候,创建一个5s延时的context,调用http自带的优雅关机函数shutdown,秒内优雅关闭服务(将未处理完的请求处理完再关闭服务),超过5秒就超时退出 juejin.cn/post/711895…