音声認識メモ(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;