Using 'causal' padding ensures conv layers does not peek into the future when making predictions 
This Sequential model starts with an explicit input layer (this is simpler than trying to set input_shape only on the first layer), then continues with a 1D convolutional layer using "causal" padding: this ensures that the convolutional layer does not peek into the future when making predictions (it is equivalent to padding the inputs with the right amount of zeros on the left and using "valid" padding). 
  Géron, Aurélien. Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow (Kindle Locations 11707-11710). O'Reilly Media. Kindle Edition. 

I quoted WaveNet and RNN part of the book.
I don't understand how the causal paddings ensure the bold sentence.
Any help would be appreciated.
 A: I hope you have found the answer in the meantime. There is  a lot of confusion about using 1d convolutions with causal padding and dilation, often referred to as temporal convolution. The figures painted in the cool NIPS/ICML/ICLR papers and MDPI journals that show how these convolutions work, looking amazing and their explanations are great, using words such as "temporal", "causal", etc. with resulting in great performance. But a lot of people use them without understanding and the required reflection (in my opinion).
Let us assume that we have an input sequence of 5 values, and our goal is to predict the next value for each of these. For instance, having the first value, we want to predict the second value. This is typically called a forecasting task or sequence modelling task. Please keep in mind, that this is for what they were originally invented for and make sense. And the figure below should represent this:

On the left side, we have "same"/"valid" padding, on the right, we have causal padding. The dark green values represent our input time series with 5 data points. If you compare them in detail, you recognize that the only thing causal padding does different is, that in the third layer, the value of the previous convolutions (blue) is on the right. It is shifted to the position where it logically should be: at the end of the sequence, since you have encoded the whole sequence. So you know: using the fifth value of the third layer, is the prediction of the next / sixth entry. But compare them with the blue value of the left side: they are calculated in the exactly same way!
Now is the point where I answer your question: If you just would use the fifth value of "same" / "valid" padding (left side), you would end with information leakage / peak in the future because with this type of padding, your third point (blue) has the value you need. But using the fourth and fifth value of the third layer, these values would have access to input of the sixth value. Thus, the receptive field have access to the future if you would use the 5th value of the third layer.
In summary, causal sounds better, the plots of it looking more "temporal"-like than just using "same" or "valid". Howerver, the calculations are the same (beside at the start).
