CTC(连接主义的时序分类)是一种在长度不同的序列中计算损失的方式。 对于不定长的模型输出和标签,在没有给定对齐的情况下计算概率和梯度,从而进行模型的训练。
在基于Attention的模型中,使用hybrid ctc+attention的方式训练,在解码过程中,进一步利用训练时CTC头部的信息,可以计算CTC前缀得分,加入到Beam Search解码中。这里前缀得分的计算方式与CTC Loss的前向后向算法的前向部分比较类似。
最近接手了一个Linux下内核编程的项目,在阅读项目原有代码的基础上,学到了很多新知识,总结一下记录在这里。
在这个项目中,使用SQLite存储用户数据,因此需要在C语言中实现SQLite的访问和增删改查处理。
在这个项目中,编写内核模块进行加解密操作,使用了Linux内核提供的crypto加密API。
在这个项目中,编写内核模块进行操作,与用户态进程之间使用Netlink Socket进行通信。
在这个项目中,客户端进程和服务器进程在同一台机器上,使用Unix Domain Socket通信。
刚开始使用Windows提供的各种API函数时,对于函数参数的类型感到非常的迷惑,实际上Windows中对于各种C++数据类型做了封装和处理,得到了一组Windows的变量类型,其中的部分字符和字符串的定义如下。
其他的类型定义可以在具体使用时搜索查看头文件(例如#include <Windows.h>)或者MSDN。
#include <Windows.h>
Winsock就是windows下的socket编程的简称,函数用法与BSD的socket(即unix中的socket)编程基本相同。
所有的代码实现位于我的Github。
重要:所有的函数使用、讲解和实例请参考Winsock文档 via Microsoft。
在C++11的STL线程库没有实现现成的信号量,可以使用互斥量和条件变量实现信号量机制。
建议使用自己定义的namespace以防止与现成的函数/类产生冲突。
由于使用了lambda函数和C++11的STL线程库,因此编译时需要指定 –std=c++11。
使用C++11实现的标准线程库进行并发编程
#include <thread>
使用Clion+CubeMX开发,开发板为野火指南者,芯片为STM32F103ZET6.
简单实现使用串口经过STM32与ESP8266通信。