Attention和Transformer
1.Self-Attention
参考Keras官方文档:https://keras.io/api/layers/attention_layers/attention/
论文公式:$$Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V$$
构造参数:
use_scale=False: scale指的是公式中的$\sqrt{d_k} $部分。默认为False,不会进行scale。如果为True,会创建一个可训练的变量来做scale
causal: Boolean类型,主要用在decoder中。如果设置为True,会创建一个倒三角形状的mask。
调用参数:
inputs: [q, v, k]的列表,k可以为空,默认等于v。
mask: [q_mask, v_mask]列表,
假设输入 q = [batch_size, Tq, dim], v = [batch_size, Tv, dim], k = [batch_size, Tv, dim].则输出 result = [batch_size, Tq, dim]
12345678 ...
CNN踩坑
CNN采坑在cnn学习过程中,因为理论中的cnn和实际keras使用中的Convolution layers有一定的差异,造成了不少的困惑,所以在这里做个记录。
理论中的CNN理论中的CNN,输入一般是二维的图像矩阵,使用一个二维的卷积核,从图像矩阵的左上角开始,取出和卷积核相同大小的矩阵做内积。卷积核在图像中做一定stride的滑动,最后输出的结果也是一个二维的矩阵。使用下面这样图来示例。
在邱锡鹏的书中,这个被称为二维卷积,输入是二维,卷积核是二维,输出是二维。
假设输入图片大小为W*W,卷积核大小F*F,步长S,padding的像素数P,那么可以得出输出的图片长度N:
1N = (W-F+2P)/S+1
卷积层的参数个数为:
1(F*F+ 1个bias)* filter数量
同时也有一维卷积。输入是一维,卷积核是一维,输出是一维。
keras中的CNN打开keras的api文档,可以看到keras对于卷积层,有具体一下几种实现:
Conv1D layer
Conv2D layer
Conv3D layer
SeparableConv1D layer
Separabl ...
推荐系统笔记
1.架构示意图推荐系统的技术架构示意图
推荐系统的数据部分主要负责“用户”“物品”“场景”的信息收集与处理。在得到原始的数据信息后,推荐系统的数据处理系统会将原始数据进一步加工,加工后的数据出口主要有三个:
生成推荐模型所需的样本数据,用于算法模型的训练和评估。
生成推荐模型服务所需的“特征”,用于推荐系统的线上推断。
生成系统监控、商业智能(Business Intelligence, BI)系统所需的统计型数据。
推荐系统的模型部分是推荐系统的主题,一般由“召回层”“排序层”“补充策略与算法层”组成。
召回层一般利用高效的召回规则、算法或简单的模型,快速从海量的候选集中召回用户可能感兴趣的物品。
排序层利用排序模型对初筛的候选集进行精排序。
补充策略与算法层,也被称为再排序层,可以在将推荐列表返回用户之前,为兼顾结果的多样性、流行度、新鲜度等指标,结合一些补充的策略和算法对推荐列表进行一定的调整,最终形成用户可见的推荐列表。
在线环境进行模型服务之前,需要通过模型训练确定模型结构、结构中不同参数权重的具体数值,以及模型相关算法和策略中的参数取值。模型训练方法又可以根据模型训 ...
feign10.12源码解析
feign10.12源码解析[toc]
时序图
主要组件ContractContract用于解析method源数据、参数类型和注解等。
默认使用feign.Contract.Default。注册处理了@Headers,@RequestLine,@Body,@Param等注解。
12345678910111213141516171819202122232425262728293031323334353637383940public Default() { super.registerClassAnnotation(Headers.class, (header, data) -> { final String[] headersOnType = header.value(); checkState(headersOnType.length > 0, "Headers annotation was empty on type %s.", data.configKey()); ...
《剑桥英语在用》笔记
https://github.com/guhailin/EnglisnGrammar
zookeeper-LeaderZooKeeperServer3.5.5
[toc]
LeaderZooKeeperServer123456789101112131415161718CommitProcessor commitProcessor;PrepRequestProcessor prepRequestProcessor;protected void setupRequestProcessors() { RequestProcessor finalProcessor = new FinalRequestProcessor(this); RequestProcessor toBeAppliedProcessor = new Leader.ToBeAppliedRequestProcessor(finalProcessor, getLeader()); commitProcessor = new CommitProcessor(toBeAppliedProcessor, Long.toString(getServerId()), false, getZooKeeperServerLis ...
zookeeper集群启动流程、选举流程3.5.5
[toc]
zookeeper 集群启动流程、选举流程3.5.51.QuorumPeerMainZookeeper的启动入口是QuorumPeerMain的main方法。启动时需要传入zoo.cfg文件参数。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354public static void main(String[] args) { QuorumPeerMain main = new QuorumPeerMain(); try { main.initializeAndRun(args); } catch (IllegalArgumentException e) { LOG.error("Invalid arguments, exiting abnormally", e); LOG.info(USAGE); ...
zookeeper 单机流程3.5.5
[toc]
zookeeper 单机流程3.5.5在ZooKeeperServerMain的启动中,会启动NIOServerCnxnFactory。
123cnxnFactory = ServerCnxnFactory.createFactory();cnxnFactory.configure(config.getClientPortAddress(), config.getMaxClientCnxns(), false);cnxnFactory.startup(zkServer);
ServerCnxnFactory.createFactory默认创建NIOServerCnxnFactory,首先调用configure方法,然后调用startup方法。
1.configure首先看NIOServerCnxnFactory.configure。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556public void configu ...
Dubbo系列-心跳机制
Dubbo系列-心跳机制首先参考文章:聊聊 TCP 长连接和心跳那些事
TCP 中的 KeepAlive 机制:
KeepAlive 并不是 TCP 协议的一部分,但是大多数操作系统都实现了这个机制(所以需要在操作系统层面设置 KeepAlive 的相关参数)。KeepAlive 机制开启后,在一定时间内(一般时间为 7200s,参数 tcp_keepalive_time)在链路上没有数据传送的情况下,TCP 层将发送相应的 KeepAlive 探针以确定连接可用性,探测失败后重试 10(参数 tcp_keepalive_probes)次,每次间隔时间 75s(参数 tcp_keepalive_intvl),所有探测失败后,才认为当前连接已经不可用。
既然操作系统已经做了KeepAlive,为什么我们要在应用层面做KeepAlive呢?主要体现在三个方面:
KeepAlive 的开关是在应用层开启的,但是具体参数(如重试测试,重试间隔时间)的设置却是操作系统级别的,位于操作系统的 /etc/sysctl.conf 配置中,这对于应用来说不够灵活。
KeepAlive 的保活机制只 ...
Dubbo系列-服务暴露
Dubbo服务暴露Dubbo服务暴露的入口是ServiceBean。
1234567891011121314151617181920212223242526272829303132public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean, ApplicationContextAware, ApplicationListener<ContextRefreshedEvent>, BeanNameAware, ApplicationEventPublisherAware{ public void afterPropertiesSet(){ ... if (!isDelay()) { //判断是否延迟暴露 export(); } ...