$Header: /u/drspeech/repos/quicknet2/TODO,v 1.134 2014/05/05 19:57:11 davidj Exp $

New features
------------
 - HTK features - .scp in QuickNet
    - compressed HTK files in test suite?
 - HTK features - .mlf and phone file
 - use pipes for training input in qnmultitrn/qngentrn
 - output to pipes on forward pass to facilitate training net heirarchies
 - momentum?
 - dropout?
 - tools for doing arbitrary functions on training/test data
 - feature selection using ranges (presumably post windowing)
 - general matrix op. for windowing
 - learning rate schedule changes - minimum no. of epochs?
   Change 0.5% performance improvement?
 - per-layer unit types, e.g. so we can train linear units in bottleneck layers
 - push new QN file format additions (.scp and .mlf) into feacat
 - RBM pre-training
 - padding - zero frames or repeated frames
 - Dan's sphinx feature file stuff - see sphinx.txt
 - Arlo's speaker-dependent normalization


Bugs to fix - short term
------------------------
 - fix qnmungewts example in man page

Lower priority
--------------
 - add some benchmarking 
   a) Tandem - 378 x 15000 x 71 bunch 2048
   b) Hats - 1120 x 8000 x 71 bunch 2048
   c) Tonotopic - 950 x 3000 x 3000 x 56 bunch 2048
   d) Tiny - 153 x 1000 x 56 bunch 512
   e) Small -  153 x 8000 x 56 bunch 512
   f) Bottleneck - 351 x 1000 x 1000 x 25 x 1000 x 41 bunch 1024
 - add warning when OMP threads and mlp_threads both >1
 - sort out vector math stuff in imkl
 - use vexpf on MacOS??
 - better vector sigmoid/softmax
    http://gruntthepeon.free.fr/ssemath/
 - sort out control over denormal squashing
 - better packing of inputs to net when lots of reject frames are
   present
 - test on recent MacOS
    -faltivec -framework vecLib 
   or
    -falitvec -framework Accelerate
 - move file format man pages to separate package

Minor fixes
-----------
 - add warning for NaNs
 - fix format in man pages for arguments with multi-paragraph descriptions
 - matlab format feature streams
 - get qn_pp_tanh_vf_vf working accurately
 - RMS error calculation
 - remove malloc/free/strdup in QN_AsciiStreams.cc
 - add version number in man pages
 - matlab load and save matrix routines
 - use libtool (and -R) for static linking and building of libraries
 - inconsistencies with section types between MLP and weight file classes
 - --with- configure command line options for atlas etc.
 - remove QN_open_ftrfile/QN_close_ftrfiles and move functionality
   to QN_open
 - add global flag for switching on/off comma-separated file names
 - fix testsuite so it adds "-lgcc" to link if possible
 - add comma-separated label files
 - fix warnings as detailed in olivier1.patch
 - testsuite programs should have dependency on library
 - threads
    - alias some intermediate result vectors?
    - alias some intermediate result vectors in QN_MLP_BunchFl3?
    - randomize testing of different thread counts
    - copy of weights for each thread for forward pass?
 - add gdb config file to dist
 - try and make faster
    - faster copy_vf_mf (memcpy?)
    - faster sumcol_mf_vf
 
Other stuff
----------------
 - function for arbitrarily combining label streams
 - SRI feature files
 - sub-epochs
 - multiple code books for unary_input
 - fix logging for single-utterance files so they are per-utterance not
   per-epoch 
 - sort out QN_InFtrStream_List::set_pos potentially needing lots of
   space to do a seek 

 - qnstrn config file?
 - bring back ChangeLogs?
 - fix or destroy QN3Config.sh
 - include CFLAGS, compiler version, in log file
 - testing
    o merge in testsuite2?
    o investigate "regress"
 - blas on apple
    -faltivec -framework vecLib 
   or
    -falitvec -framework Accelerate
 - fix QN_utils.cc:build_ftrstream so it frees old ftr_str objects
 - check shared stuff in testsuite
 - move testdata scripts to subdir
 - test qncopy?  Add to testdata? install?

One day
-------
 - use templates for horrible macro stuff?
 - Testsuite for QN_OutFtrStream_Rapact.
 - Scan to check all sentences are large enough for window size??
 - Do regression suite
 - Renormalization of LNA files on input
 - Enhance "Starting chunk" messages - MCUPs etc - and add to CV
 - Write new class for merging sentences to form bigger units 
 - Fix so that we use big bunches in CV by not fragmenting on a sentence
   basis (QN-trn.cc#291)
 - Test suite for JoinFtrs.
 - fixed hacked unary_enumerate implementation
 - remove swb_ps_vrfy from Makefile
 - Spot un-word-aligned pre files
 - Give some indication of extent when input features saturate.
 - Recursively clean lower directories with "make clean"
 - Online output of LNA files
 - Handle ftr1_file==hardtarget_file better
 - Merge QN_HardSentTrain and QN_SoftSentTrain.

