How does a 2x2 deconv kernel with stride=2 work?
For example, if the feature map is 8x8, than I use such a deconv and the feature map becomes 16x16, I'm confused that what the difference between:

deconv(kernel_size=2, stride=2, padding='valid')


and 

deconv(kernel_size=3, stride=2, padding='same')


Since they will both make feature map 2 times larger, how do they work respectively?

I think you'll find the explanations and interactive demo on this web page very helpful.  

Specifically, setting stride=2 will double your output shape regardless of kernel size.
kernel_size determine how many output pixels are affected by each input pixel.
Setting stride=2 and kernel_size=2 simply "duplicates" your kernel on the output. Consider this 1D example. Suppose your kernel is [a, b] and your input is [A, B, ...], then the output is

[A*a, A*b, B*a, B*b, ...]


For kernel_size=3, the output becomes

[A*a, A*b, A*c+B*a, B*b, B*c+C*a, ...] 

