1D Convolution – Nikolaos Petrou

Artificial Intelligence & Information Analysis

Topic: 1D convolutions constitute the basis for understanding 2D and 3D convolutions which are prevalent in machine learning and convolutional neural networks (CNNs) and they are mostly used for time-series analysis, e.g. audio, text, sensor data (gyroscope, accelerometer), natural language processing (NLP).

Exercise: Create a python script and perform the following tasks:

  1. Create a vector A of N > 10 random numbers, where N the user provided length of A
  2. Create vector B = [1/5  1/5  1/5  1/5  1/5]
  3. Call MyConvolve(A, B) function, estimating the convolution of inputs A and B
  4. Call MyConvolve function using sound signals sample_audio.wav and pink_noise.wav as inputs, and write convolution output to the sound file pinkNoise_sampleAudio.wav
  5. Create signal of white noise, white_noise.wav,  convolve It with sample_audio.wav and write convolution output to the sound file whiteNoise_sampleAudio.wav
  6. Parallelize MyConvolve with the aid of PyCUDA

Instructions:
Exercise files include:

Click here to download the exercise material

Material for better understanding: A lecture on 1D convolutions algorithms (e.g., FFT-based, Winograd, block-based), e.g., from: https://icarus.csd.auth.gr/fast-1d-convolution-algorithms-lecture/

Knowledge Assessment questionnaire: https://aiia.csd.auth.gr/gr/cvml-knowledge-self-assessment/