ValueError: Error when checking input: expected conv2d_13_input to have shape (3, 150, 150) but got array with shape (150, 150, 3)
Change this:

model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150),padding='same'))


to this:

model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3),padding='same'))


And read the doc: https://keras.io/layers/convolutional/#conv2d

In particular the section about data_format:


  data_format: A string, one of "channels_last" or "channels_first". The ordering of the dimensions in the inputs.  "channels_last" corresponds to inputs with shape  (batch, height, width, channels) while "channels_first" corresponds to inputs with shape  (batch, channels, height, width). It defaults to the image_data_format value found in your Keras config file at ~/.keras/keras.json. If you never set it, then it will be "channels_last".