Faster-rnnlm代码分析1 - 词表构建,Nnet成员
https://github.com/yandex/faster-rnnlm
Gdb ./rnnlm
r -rnnlm model-good.faster -train thread.title.good.train.txt -valid thread.title.good.valid.txt -hidden 5- -direct-order 3 -direct 200 -bptt 4 -bptt-block 10 -threads 1
[root@cq01-forum-rstree01.cq01.baidu.com faster-rnnlm]# more thread.title.good.train.txt
唉 稳 凉菜 干货 批发 稳 左成 个 月 都
咦 丢 图 跑
毕竟 新人
我 想去旅行
昨天 玩 个 满 深渊 人马 才 踩 了 55
这 状态 还 不如 温网
新型 投资项目
晒 早饭 就 酱
渣土 哥 真是 太 放肆 了
推荐 就是 有 这样 的
白素贞 水 漫 文水 城
我知道 那些夏天 就像 你 一样 回 不
渑池 至 洛阳 最早 的 车 几 点 哪里 坐 到 洛阳 几点
宏观 方面 大 的 流动性 格局 虽无 明显 变化 但 眼下 地方 政府 债务 限
电工 行业 竞争 大 锦力 电器 有 优势
兄弟 啊 影技 1 班 q 群 是 多少
你们 家乡 话 叫 什么
深深 的 孤独感 与 挫败 感 感觉 个人
一起去 旅游 吧
谁知道 四会 那里 有 修 打火机 的
[root@cq01-forum-rstree01.cq01.baidu.com faster-rnnlm]# pwd
/home/users/chenghuige/other/faster-rnnlm.debug/faster-rnnlm
- 统计词频建立vocabulary
void Vocabulary::BuildFromCorpus(const std::string& fpath, bool show_progress)
首先添加一个 </s>
AddWord(kEOSTag);
只是编号0
然后逐个添加每行
每行处理的时候按照IsSpace切分
inline bool IsSpace(char c) {
return c == ' ' || c == '\r' || c == '\t' || c == '\n';
然后其实就是对每个词
类似 Identifer.h那样顺序编号,没出现的词
叫做oov 编号 -1
除了编号之外
同时统计频次
最后按照频次排序
从大到小
同时更新编号
也就是频次最大的
这里 </s> 编号为0
(gdb) p words_
, word = 0x6ae1c0 "</s>"}, {
freq = 258246, word = 0x6aef20 "\265\304"}, {freq = 126910, word = 0x6aeff0 "\301\313"}, {
freq = 101904, word = 0x6aedc0 "\316\322"}, {freq = 67328, word = 0x6aeee0 "\323\320"}, {
freq = 62290, word = 0x6aec10 "\270\366"}, {freq = 60866, word = 0x6afb20 "\322\273"}, {
[root@cq01-forum-rstree01.cq01.baidu.com faster-rnnlm]# wc -l thread.title.good.train.txt
thread.title.good.train.txt
gdb) p cfg
$2 = {layer_size = 5, layer_count = 1, maxent_hash_size = 199947228, maxent_order = 3, use_nce = false, nce_lnz = 9, reverse_sentence = false, layer_type = "sigmoid"}
- 构建网格结构
main_nnet = new NNet(vocab, cfg, use_cuda, use_cuda_memory_efficient);
构造函数调用Init 在这里
embeddings.resize(vocab.size(), cfg.layer_size);
//(word_num, hidden_size) 二维数组
rec_layer = CreateLayer(cfg.layer_type, cfg.layer_size, cfg.layer_count);
//隐层
建立一个layer 默认layer_type是sigmoid
maxent_layer.Init(cfg.maxent_hash_size);
//最大熵
@TODO
softmax_layer = HSTree::CreateHuffmanTree(vocab, cfg.layer_size);
//输出层 softmax 采用huffman树
Faster-rnnlm代码分析1 - 词表构建,Nnet成员的更多相关文章
- tensorflow faster rcnn 代码分析一 demo.py
os.environ["CUDA_VISIBLE_DEVICES"]=2 # 设置使用的GPU tfconfig=tf.ConfigProto(allow_soft_placeme ...
- 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)
构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...
- tensorflow笔记:多层LSTM代码分析
tensorflow笔记:多层LSTM代码分析 标签(空格分隔): tensorflow笔记 tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) ten ...
- Android代码分析工具lint学习
1 lint简介 1.1 概述 lint是随Android SDK自带的一个静态代码分析工具.它用来对Android工程的源文件进行检查,找出在正确性.安全.性能.可使用性.可访问性及国际化等方面可能 ...
- 常用 Java 静态代码分析工具的分析与比较
常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...
- angular代码分析之异常日志设计
angular代码分析之异常日志设计 错误异常是面向对象开发中的记录提示程序执行问题的一种重要机制,在程序执行发生问题的条件下,异常会在中断程序执行,同时会沿着代码的执行路径一步一步的向上抛出异常,最 ...
- [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(3)
这个系列已经写了5篇,链接地址如下: [Asp.net 5] DependencyInjection项目代码分析 [Asp.net 5] DependencyInjection项目代码分析2-Auto ...
- wifi display代码 分析
转自:http://blog.csdn.net/lilian0118/article/details/23168531 这一章中我们来看Wifi Display连接过程的建立,包含P2P的部分和RTS ...
- Device Tree(三):代码分析【转】
转自:http://www.wowotech.net/linux_kenrel/dt-code-analysis.html Device Tree(三):代码分析 作者:linuxer 发布于:201 ...
随机推荐
- 如何将jsp页面的table报表转换到excel报表导出
假设这就是你的jsp页面: 我们会添加一个“导出到excel”的超链接,它会把页面内容导出到excel文件中.那么这个页面会变成这个样子 在此,强调一下搜索时关键词的重要性,这样一下子可以定位到文章, ...
- Android坐标系统
1 背景 去年有很多人私信告诉我让说说自定义控件,其实通观网络上的很多博客都在讲各种自定义控件,但是大多数都是授之以鱼,却很少有较为系统性授之于渔的文章,同时由于自己也迟迟没有时间规划这一系列文章, ...
- opencv统计二值图黑白像素个数
#include "iostream" #include "queue" #include "Windows.h" #include < ...
- 一颗躁动的心---下决心从SLAM开始,不钻研嵌入式底层了
在写这个随笔时,北京的外面正在下2016的第一场雪.夜深人尽之时总会考虑一下自己的未来在何方. 长这么大了,我发现我这人始终不能坚定不移的朝着一个方向努力,总是朝三暮四,对学习更是朝令夕改,这造成了我 ...
- mysql 主从数据库设置方法
1.主从数据库都需开启bin-log日志 2.在my.ini(windows)或my.cnf(linux)配置文件中添加 server-id = 1(主从配置 id 必须不同) 例子: [mysqld ...
- Android 数据存储之 文件存储
-------------------------------------------文件存储----------------------------------------------- 文件存储是 ...
- SVN迁移到Git的过程(+ 一些技巧
关于在VCS中SVN和Git之间的迁移(Clone)这个部分网上已经有大批的文章介绍,而且都非常不错,能够满足我们的常见的需求,这里介绍的是我自己整理的一些技巧和使用中出现的一些问题和疑问.阅读本篇文 ...
- BZOJ 1057: [ZJOI2007]棋盘制作
Decsription 给你一个矩阵,求最大了 01相间 的矩阵. Sol DP+悬线法. 这是一个论文啊 <浅谈用极大化思想解决最大子矩形问题>--王知昆. 枚举每一根悬线,记录最左/右 ...
- iOS开发之loadView和viewDidLoad总结
http://www.1000phone.net/forum.php?mod=viewthread&tid=10507&extra=page%3D1%26filter%3Dauthor ...
- 16进制字符串转换为3进制(扩展至K进制)
[本文链接] http://www.cnblogs.com/hellogiser/p/16-to-3-or-k.html [题目] 写代码把16进制表示的串转换为3进制表示的串.例如x=”5”,则返回 ...