Blame view

egs/wsj/s5/steps/nnet2/adjust_priors.sh 2.42 KB
8dcb6dfcb   Yannick Estève   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
  #!/bin/bash
  
  # Copyright 2012-2014  Johns Hopkins University (Author: Daniel Povey).  Apache 2.0.
  # Copyright (c) 2015, Johns Hopkins University (Yenda Trmal <jtrmal@gmail.com>)
  # License: Apache 2.0
  
  # Begin configuration section.
  cmd=run.pl
  iter=final
  # End configuration section
  
  
  echo "$0 $@"  # Print the command line for logging
  
  if [ -f path.sh ]; then . ./path.sh; fi
  . parse_options.sh || exit 1;
  
  if [ $# != 2 ]; then
    echo "Usage: $0 [opts] <degs-dir> <nnet-dir>"
    echo " e.g.: $0 exp/tri4_mpe_degs exp/tri4_mpe"
    echo ""
    echo "Performs priors adjustment either on the final iteration"
    echo "or iteration of choice of the training. The adjusted model"
    echo "filename will be suffixed by \"adj\", i.e. for the final"
    echo "iteration final.mdl will become final.adj.mdl"
    echo ""
    echo "Main options (for others, see top of script file)"
    echo "  --config <config-file>                           # config file containing options"
    echo "  --cmd (utils/run.pl|utils/queue.pl <queue opts>) # how to run jobs."
    echo "  --iter <iteration|final>                         # which iteration to be adjusted"
    exit 1;
  fi
  
  degs_dir=$1
  dir=$2
  
  src_model=$dir/${iter}.mdl
  
  if [ ! -f $src_model ]; then
    echo "$0: Expecting $src_model to exist."
    exit 1
  fi
  
  if [ ! -f $degs_dir/priors_egs.1.ark ]; then
    echo "$0: Expecting $degs_dir/priors_egs.1.ark to exist."
    exit 1
  fi
  
  num_archives_priors=`cat $degs_dir/info/num_archives_priors` || {
    echo "Could not find $degs_dir/info/num_archives_priors.";
    exit 1;
  }
  
  $cmd JOB=1:$num_archives_priors $dir/log/get_post.${iter}.JOB.log \
    nnet-compute-from-egs "nnet-to-raw-nnet $src_model -|" \
    ark:$degs_dir/priors_egs.JOB.ark ark:- \| \
    matrix-sum-rows ark:- ark:- \| \
    vector-sum ark:- $dir/post.${iter}.JOB.vec || {
      echo "Error in getting posteriors for adjusting priors."
      echo "See $dir/log/get_post.${iter}.*.log";
      exit 1;
    }
  
  
  $cmd $dir/log/sum_post.${iter}.log \
    vector-sum $dir/post.${iter}.*.vec $dir/post.${iter}.vec || {
      echo "Error in summing posteriors. See $dir/log/sum_post.${iter}.log";
      exit 1;
    }
  
  rm -f $dir/post.${iter}.*.vec
  
  echo "Re-adjusting priors based on computed posteriors for iter $iter"
  $cmd $dir/log/adjust_priors.${iter}.log \
    nnet-adjust-priors $src_model $dir/post.${iter}.vec $dir/${iter}.adj.mdl || {
      echo "Error in adjusting priors. See $dir/log/adjust_priors.${iter}.log";
      exit 1;
    }
  
  echo "Done adjusting priors (on $src_model)"