1、在C++代码中调用FST的方法进行操作
FST中的几个基本的抽象类模板
-
Fst 支持基本的fst的操作
-
ExpandedFst 额外增加了NumStates()方法
-
MutableFst 增加了几种操作的变种比如AddStates()和SetStart()
Fst中的几种非抽象类模板
-
VectorFst
-
ConstFst
-
ComposeFst
FST的C++操作一般有三种形式:
(1) Destructive:例如 Connect操作, 会改变其输入
void Connect(MutableFst<Arc> *fst);
(2)Constructive:例如Reverse操作, 创建一个新的expanedFst
void Reverse(const Fst<Arc> &infst, MutableFst<Arc> *outfst);
(3)Delayed: 例如ComposeFst,创建一个unexpectedFst
ComposeFst<Arc>(const Fst<Arc> &fst1, const Fst<Arc> &fst2);
2、shell操作fst, 使用C++编写好的命令进行操作,参数包括输入和输出的fst,如果没有则为标准输入输出
- Unary Operations
fstunaryop in.fst out.fst
fstunaryop <in.fst >out.fst
- Binary Operation
fstbinaryop in1.fst in2.fst out.fst
fstbinaryop - in2.fst <in1.fst >out.fst
3、WFST中最重要的Composition操作举例:
C++代码中:
#include <fst/fstlib.h>
namespace fst {
StdVectorFst *input = StdVectorFst::Read("input.fst");
StdVectorFst *model = StdVectorFst::Read("model.fst");
ArcSort(input, StdOLabelCompare());
ArcSort(model, StdILabelCompare());
StdVectorFst result;
Compose(*input, *model, &result);
Project(&result, PROJECT_OUTPUT);
result.Write("result.fst");
shell中进行compose操作,过程与C++中的一致:
$ fstarcsort --sort_type=olabel input.fst input_sorted.fst
$ fstarcsort --sort_type=ilabel model.fst model_sorted.fst
$ fstcompose input_sorted.fst model_sorted.fst comp.fst
$ fstproject --project_output comp.fst result.fst
# 直接通过一个管道操作
$ fstarcsort --sort_type=ilabel model.fst | fstcompose input.fst - | fstproject --project_output result.fst
4、常用的FST操作
参考官网 http://www.openfst.org/twiki/bin/view/FST/FstQuickTour
5、FST的一些定义:
权重的计算都定义在一个Weight类型中,包括半环的加操作Plus(x, y)和乘操作Times(x, y),静态成员函数Zero(), One()代表加操作和乘操作的幺元。加操作用来计算两条可选的路劲。比如Tropical半环的加操作为min(x, y),表示选择路径权重小的作为新的权重。乘操作是在于一条路径上上计算匹配的路径,包括composition操作。当且仅当一个状态的权重不为加操作的幺元时才能作为终止状态。同理,一条路径的权重也不能使加操作的幺元。不然这条路劲就没有任何意义。与幺元进行加操作等于其本身。
到这基本了解了FST的一些基本的用法。现在总结一下。一个WFST包含的东西应该有状态集合,转移结合,输入label,输出label,权重。
定义一个stdvectorFst 要对其添加状态addstate(), 添加转移addarc(), 而输出label和输入label以及权重都是保存在一个类中。这个类就是我们之前一直看到的Arc。这个类保存了输入label,输出label和权重信息。是FST中最关键的一个类。我们再来复习一下这个类的声明:
StdFst *fst = StdFst::Read("binary.fst")
struct StdArc {
typedef int Label;
typedef TropicalWeight Weight;
typedef int StateId;
Label ilabel;
Label olabel;
Weight weight;
StateId nextstate;
所以在之后看到Label类型和StateId类型都不需要慌张,它们都是int类型,都是转化的数字。
首先看博客:传送门
同时可以参考如何去查看里面的各个文件:传送门
了解HCLG.fst由哪四部分构成的,他们的构成的先后顺序是怎么样的,以及构成每一步的时候他们的输入输出文件是什么。
HCLG.fst由四部分构成
G:语言模型WFST,输入输出符号相同,实际是一个WFSA(acceptor接受机),为了方便与其它三个WFST进行操...
std::fstream旨在以独立于平台的方式处理文件。
std::fstream从std::ofstream那里继承了写入文件的功能,并从std::ifstream那里继承了读取文件的功能,从而能够提供读写的功能。
要使用fstream、ofstream和ifstream类时,需要使用方法open打开文件!
其原型是:
imbue(locale(“chs”));设置中文模式
void open(...
安装环境:vm2015pro 安装虚拟机ubuntu19.10
安装过程完全参考吴本谷的《Kaldi的全部资料_0.4》(感谢吴本谷提供的资料,让我有信心开始入手kaldi).
下面记录一下过程中的问题。
文章目录E: Unable to locate package libtoosudo apt-get install libatlas-devwget http://www.zlib.net/z...
一、std::vector的6种初始化方式
1、vector ilist1;
默认初始化,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。
2、vector ilist2(ilist);
vector ilist2 = ilist;
两种方式等价 ,ilist2 初始化为ilist 的拷贝,ilist必须与ilist2 类型相同,也就是同为int的vector类型,ilist2
http://www.slideshare.net/lucenerevolution/what-is-inaluceneagrandfinal
http://www.slideshare.net/jpountz/how-does-lucene-store-your-data
http://www.infoq.com/cn/articles/database-timestam...
2. 避免序列化不必要的字段,只序列化需要的字段,可以减少序列化的数据量和时间。
3. 使用基于二进制的序列化格式,例如Protobuf和Avro,它们比基于文本的格式(如JSON和XML)更快。
4. 避免使用反射,因为反射会降低序列化的速度。
5. 使用缓存,将序列化后的对象缓存起来,可以避免重复序列化相同的对象,提高序列化速度。
希望这些方法能够帮助您提升Java对象序列化的速度。
[code=python]
Traceback (most recent call last):
File "/opt/anaconda/lib/python3.7/multiprocessing/pool.py", line 121, in worker
result = (True, func(*args, **kwds))
File "/opt/anaconda/lib/python3.7/multiprocessing/pool.py", line 44, in mapstar
return list(map(*args))
File "/home/yyk/PycharmProjects/untitled1/cgp-cnn-PyTorch-master/cgp_config.py", line 12, in arg_wrapper_mp
return args[0](*args[1:])
File "/home/yyk/PycharmProjects/untitled1/cgp-cnn-PyTorch-master/cgp_config.py", line 33, in cnn_eval
evaluation = train(net, gpu_id, epoch_num=epoch_num, out_model=None)
File "/home/yyk/PycharmProjects/untitled1/cgp-cnn-PyTorch-master/cnn_train.py", line 154, in __call__
init_weights(model, 'kaiming')
File "/home/yyk/PycharmProjects/untitled1/cgp-cnn-PyTorch-master/cnn_train.py", line 92, in init_weights
net.apply(weights_init_kaiming)
File "/opt/anaconda/lib/python3.7/site-packages/torch/nn/modules/module.py", line 293, in apply
module.apply(fn)
torch.nn.init(nn/init.py)
faner1994
torch.nn.Parameter(nn/parameter.py)
faner1994
torch.nn.Parameter(nn/parameter.py)
LiFei8575857:
torch.nn.init(nn/init.py)
Sylvester2017: