Connectionist Temporal Classification (CTC) in Keras with TensorFlow
I want to recognize e.g. classify patterns in a time-series. Classification is dependent on the values in multiple timesteps. I tried therefore an LSTM implementation using the Keras extension but results were poor. I suspect the reason is the usage of the Windowing Operator that samples windows of a fixed length. Patterns in my dataset don't have a fixed length of timesteps, it's somewhat equivalent to speech recognition. My current training dataset has 1 to 16 timesteps per pattern/class, in average 3.8 timesteps. After studying the documents listed below I learned that Connectionist Temporal Classification (CTC) could bring me a suitable solution.
Questions:
- TensorFlow v1.8 offers back-office CTC APIs. My current TensorFlow that I use with Keras/RapidMiner is v1.0x but I could pip/conda to the new version. However, TF's CTC API's have to be implemented in Python. Is such implementation feasible in the Execute Python Operator together with the Keras Operator? Has anyone tried such before in RapidMiner? Is an example process available?
- An ensemble of a Hidden Markov Model (HMM) and an LSTM could provide a solution as described in the 1st document. However, I couldn't find HMM in RapidMiner's operators or RapidMiner's MarketPlace. The HTK package from MS/Cambridge University is delivered in C-code and has to be compiled. It needs also data in MFCC format. I prefer not to go this route. Does RapidMiner offer HMM operators in the MarketPlace? Is such HMM/LSTM ensemble feasible in RapidMiner?
- Would you advise any other model for my recognition/classification task?
Documents:
Supervised Sequence Labelling with Recurrent Neural Networks
Answers
Just to answer question 2, I am using R for Hidden Markov Models within Rapidminer. There are several packages available with different characteristics. Most are straight forward to setup but I usually start with the DepmixS4 packaged.
Alex