音声認識メモ(Kaldi)その25(内部で扱うデータの型)
プログラム内で扱うデータの桁数に関するメモ。
デフォルトでコンパイルすると「float」型になる。
kaldi/configure at master · kaldi-asr/kaldi · GitHub
configure抜粋
# Default configuration double_precision=false (snip) if $double_precision; then echo "DOUBLE_PRECISION = 1" >> kaldi.mk else echo "DOUBLE_PRECISION = 0" >> kaldi.mk fi
DOUBLE_PRECISIONが「0」なら、テンプレート部分はfloat型でコンパイルされる。
matrix/kaldi-matrix.cc
template<typename Real> void Matrix<Real>::Read(std::istream & is, bool binary, bool add) { Real r; is >> r;
マシンにdouble型を扱う回路が付いているなら、double型にした方が速くなるのかもしれない。
以下はデータ読み込みに関するメモ。
以下のような指数表記で書かれたテキストファイルがあったとして、
-6.93889018e-18 -5.55112e-17 ...
以下のコードでちゃんと読んでくれる。
float r; is >> r;