I'm trying to make a neural network that detects certain instruments in a song. I don't know for sure if I should use an RNN, CNN OR DNN. Which one is best for this situation?
-
2$\begingroup$ I suggest you insert your question in the question body instead of the title and provide some more details $\endgroup$– user9947May 3, 2018 at 12:26
-
$\begingroup$ Without knowing anything about this problem, the question that pops into my mind is "are you looking at patterns to determine the number of instruments in a recording, such as a popular song or symphony?" $\endgroup$– DukeZhou ♦May 3, 2018 at 18:44
1 Answer
I don't know for sure if I should use an RNN, CNN OR DNN. Which one is best for this situation?
This question or variations of of crop up a lot in DataScience stack exchange too. To paraphrase:
I am trying to do something with X data, and I have a lot of choices for the model. Which is best?
Unfortunately, the answer is generally:
It depends on all the fine details of your project
Unless someone has done almost your exact project recently (so they were using latest techniques of the model type), then no-one knows a priori which model will get the best result.
Optimising machine learning is very much an empirical subject. If you want to know whether A is better than B, you have to try both and measure their performance.
In your case, I think that CNNs and RNNs are both applicable (and you might want to look at a WaveNet-like architecture, which is a variant of CNN, but that could be a bit too advanced to start with). You might have a slight preference for RNN as a starting point if the sequence length to process varies significantly, such that padding input to a CNN would be inefficient. You may also prefer an RNN if the output of your model needs to be a sequence, and doubly so if the output sequence varies in length and is not directly related to the input sequence length (think of natural language translation).