I have 3D images that constitute of 2 spatial dimensions, e.g. (x,y) coordinates, with the 3rd dimension being a time signal. The signal is not periodical, but related to physical properties of medium & interfaces. It might look something like this:
Let's say I have 1000s of these and I could produce as many as I needed to train the network.
I'm interested in training a neural network on this signal. For example, different types of events within a signal would typically result in some characteristic patterns (and I'm primarily interested in finding those events & which one happened in the time signal, at a given (x,y) position ). Perhaps those can be picked up by a neural network (in a first classification/clustering phase of learning).
My first very rough attempts as to how to proceed would be:
- Take those 1000s of time signal and split them into smaller chunks. Those may or not contain an event.
- Feed them into the network for classification/clustering. I would establish some arbitrary # of clusters, possibly refining that based on initial results
- Add to my algorithm some averaging method to be able to "see" what the "average" time signal chunk looks like within each cluster. I could then tag those of interests based on prior knowledge I have about what they should, in theory, look like.
- Refine the clusters until satisfied
Once that's done, I'd like to be able to feed it new time signals. The network's job would be to identify within each typical events (according to earlier classification) and tag them for me. If many time signals agree that a given event happened around some (x,y) position, then I would have identified something of interest in that image.
As you have probably guessed this would be unsupervised learning mostly - e.g. the data isn't tagged with events. However as mentioned I would intervene between rounds of learning and tweak things depending on results.
- Metrics for classification of time signal? I'm thinking dynamic time warping, because my chunks may have varying lengths and also because although for a given even they would be similar, amplitudes etc... may vary a decent amount. I know it's pretty slow but I don't care, I could spin that off into an Amazone instance and let it do its thing. But other metrics I could use?
- Framework/lib to use? When it came out, I dabbled in Tensor Flow a bit. I think now Keras is the "successor" or best wrapper around it. I'd be inclined to use that. I would be most interested in speed of prototyping/development first. Not interested at this point of learning the intricacies of an advanced lib if I don't have to. Learn to walk before you can run, sort of thing. So if an easier NN wrapper exists I'm open.
- I did a bit of NN. I know the basics about NN architectures (# of layers, optimisations methods etc.). However I'm not an expert in that. Any quick advices as to what types of network I should look into first for that type of problems?
I'll be working in Python.