I do not understand the prediction result of the CNN model
Without knowing more about the training data it's impossible to explain the prediction results properly. One way to interpret the results is that the model is producing a probability distribution, over 3 classes, for each image you feed. This would be the case if your training data consists of one-hot vectors where exactly one element is 1 and the other two are 0.

The output of the model is your final layer after the final activation function is applied, so the prediction has the same shape of your dense_2 final layer. The None in the first dimension indicates that the size of that dimension at runtime is dynamic, and in this case the first dimension represents batch elements. Hence the output is an array of shape [batch_size, 3] and you have one 3-element vector for each of the 4 example images fed into your network.

In your comment you indicated that your final activation is the softmax function, which means that each 3-element vector can represent a probability distribution over 3 possible outcomes (notice that each vector sums to one: by definition softmax normalizes its output).

If you're trying to predict classes for each image, which appears to be the case, the predicted class label integer would be the index of the 3-element vector that has the highest probability. Typically these integers represent something semantically relevant to your application.

With a softmax output you still have to apply a decision rule on the output to actually retrieve the predicted class. For example, if your possible classes are ["dog", "cat", "mouse"] and your example image outputs a vector [.06, .9, .04], then you could choose the "predicted class" to be "cat". Or you could incorporate the predicted probability distribution into a more elaborate probabilistic model.