fast-RCNN
- mlp
以手写数字识别为例子
神经元:装数字的容器0-1
将一个手写数字分为28*28的大小的神经元组合(784),神经元中的数值代表着灰度,0为黑,1为白
这个数值叫做激活值,这784个神经元组成了mlp的第一层
最后一层代表0-9的数字,激活值也在0-1,代表着是这个数字的可能性
中间部分叫做隐含层,黑箱,进行一些识别数字的具体工作
假设选择两个隐含层,每层16个神经元(乱选的),上一层的激活值决定下一层激活值。。怎么算是关键。。
理想情况下,我们希望倒数第二层神经元代表数字的各个笔画,比如9的话,倒数第二层希望能点亮圆圈和竖线
所以从第三层到最后一层 我们只需要学出来哪些笔画组合能组成哪个数字就行
第二层则是把各个笔画拆成更小的部分
那么到底怎么又第一层激活值得到第二层的激活值呢?
引入激活函数:
权重代表每一条神经的影响能力
加入我想设置加权和大于10的时候点亮,那么就设置一个偏置,最终激活函数输入如下
第二层的每个神经元都和第一层的784连起来,每条神经上都带一个权重,并且每个神经元都带一个偏置
如何设置这一坨数字才能满足结果
那我们如何获得这些参数呢?
代价函数:用来告诉系统你训练出来的结果是垃圾还是可用的!
可以简单设置为(最后一层得到的激活值-目标值)^2再求和,目标让他最小
反向传播通过导数链式法则计算损失函数对各参数的梯度,并根据梯度进行参数的更新,
最后使得代价函数最小
- RCNN 识别加定位
-fast-RCNN
-
在图像中确定1000-2000个候选框(选择性搜索)
-
将整张图片输进cnn,获取特征图
-
找到每个候选框再特征图上的映射,并将这个映射作为每个候选框的卷积特征输入到池化层
-
对候选框中提取的特征使用分类器判别是否属于一个特征类。
-
对于属于某一特征的候选框,用回归器进一步调整其位置。。
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…