After transforming timeseries into an image format, I get a width-height ratio of ~135. Typical image CNN applications involve either square or reasonably-rectangular proportions - whereas mine look nearly like lines:

Example dimensions: (16000, 120, 16) = (width, height, channels).

Are 2D CNNs expected to work well with such aspect ratios? What hyperparameters are appropriate - namely, in Keras/TF terms, strides, kernel_size (is 'unequal' preferred, e.g. strides=(16, 1))? Relevant publications would help.

Clarification: width == timesteps. The images are obtained via a transform of the timeseries, e.g. Short-time Fourier Transform. channels are the original channels. height is the result of the transform, e.g. frequency information. The task is binary classification of EEG data (w/ sigmoid output).

Relevant thread

  • $\begingroup$ Are the spatial correlations in the vertical (height) dimension relevant? I.e. does the vertical distance have physical meaning? $\endgroup$
    – MPA
    Apr 6 '20 at 11:51
  • $\begingroup$ @MPA Question updated $\endgroup$ Apr 6 '20 at 11:58
  • $\begingroup$ What is the type of the desired output? A class label (e.g. for detection), a time series (e.g. for filtering), etc.? $\endgroup$
    – MPA
    Apr 6 '20 at 12:07
  • $\begingroup$ @MPA Binary classification, updated again $\endgroup$ Apr 6 '20 at 12:09
  • $\begingroup$ Depending on the physical nature of the input data, you could first perform 1D convolutions with dimensionality reduction along the time axis to extract the most relevant features for each frequency band, and then combine the features of each frequency band into a class prediction. Or if the data are sufficiently smooth, you could try an auto-encoder to compress the time axis into a smaller latent space representation, and perform additional analysis on the latent space. $\endgroup$
    – MPA
    Apr 6 '20 at 14:00

I had recently used a slightly unorthodox method to process such images, which involved using RNNs.

Assume the image dimensions to be (16000, 120, 16) = (width, height, channels), as in the question.

Apply a 2D convolution (or multiple such convolutions) of shape(1, k, c), such that the output of the convolutions becomes (16000, 1, c). So if you only use a single convolutional layer, k=120.

Then, squeeze the extra dimension, to get the shape (16000, c).

The problem has now been transformed back into a sequence problem! You can use RNN variants for further processing.

  • $\begingroup$ This defeats the purpose of the transform; see updated question. $\endgroup$ Apr 6 '20 at 11:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.