1-D convolutions process audio, sensor streams and sequences. Implement one with stride 1 and no padding (actually a cross-correlation, as in every deep learning library):
for x: (N, C_in, L), W: (C_out, C_in, K) and b: (C_out,), giving y: (N, C_out, L - K + 1).
Implement conv1d_forward(x, W, b) returning (y, cache), and conv1d_backward(dy, cache) returning (dx, dW, db). Then implement causal_conv1d(x, W, b), which left-pads the input with K - 1 zeros so the output has length L and position t only sees inputs ≤ t (as in WaveNet).