Hi Michael,
Thank you for your interest in my project! I apologize for the belated reply.
For your first question, yes it was defined internally. The function definition is as follows:
takeLast[list_List] := Map[Last, list, {2}]
For your second question, this project did not use neural network, but could be roughly described as a feed-forward network of linear regressers, random forest, and other classifier functions (I let Mathematica decides which one to use). The precise structure is described in that network figure: I trained the second layer to map from each features to the correct valence/arousal values, and then I trained the third layer to map the vector of valence/arousal predictions to the correct label.
The code for this project is very long and is simply repetition of what I described in this post:
define feature extractor
extract feature for every time step, outputting a feature time series
train two predictor functions to map feature time series to "ground truth" valence and arousal value
repeat the above three steps for each type of feature (power, entropy, etc.), creating a "feature vector"
finally, train classifier function to map arousal and valence feature vectors to "ground truth" labels.
I don't know if the actual code will be helpful to you, but if you still want the code, I am more than willing to post it here.
This approach works, but it is definitely not optimal. For one thing, back propagation only happens locally instead of globally. I have been planning to redo this project with neural network (which is more efficient and much better at distributed representation) for a long time, and I hope I can find some time in the near future to finish it. I am currently working on a time series classification project using recurrent neural networks in a neuroscience laboratory, and I could potentially adapt the network architecture I have in that project to fit the purpose of this project.
Anyway, thank you again for your interest in my project. I hope my reply helps.
Best regards,
William