## 1 Introduction
Eventually, the output generates a probability distribution for all possible classes (usually using the _Softmax_ function). Softmax is a function which takes an input vector \(Z\) of \(k\) real numbers and normalizes it into a probability distribution consisting of \(k\) probabilities, proportional to the exponentials of the input numbers [3]. \[\sigma(z)_{j}=\frac{e^{z_{j}}}{\sum_{k=1}^{K}e^{z_{k}}}j=1,\ldots,k\;\textit{ where }\;\sigma:R^{k}\rightarrow\;R^{k}\;Z=(z_{1},\ldots,z_{k})\in R^{k} \tag{1}\]  
For example, if we try to classify an image as \(L_{im-a}\), or \(L_{im-b}\), or \(L_{im-c}\), or \(L_{im-d}\), then we generate four probabilities for each input image, indicating the respective probabilities of the image belonging to each of the four categories. There are two important points to be mentioned here. First, during the training process, we require a large number of images for each class (\(L_{im-a}\), \(L_{im-b}\), \(L_{im-c}\), \(L_{im-d}\)). Secondly, if the network is only trained for the above four image classes, then we cannot expect to test it for any other class; e.g., \"\(L_{im-x}\).\" If we want our model to sort images as well, then we need to get many \"\(L_{im-x}\)\" images and to rebuild and retrain the model [3]. There are cases where we do not have enough data for each category, or the classes are huge but also dynamically changing. Thus, the cost of data collection and periodic retraining is enormous. A reliable solution should be sought in these cases. In contrast, \(k\)-shot learning is a framework within which the network is called upon to learn quickly and with few examples. During training, a limited number of examples from diverse classes with their labels are introduced. The network is required to learn general characteristics of the problem, such as features which are either common to the samples of the same class, or unique features which differentiate and eventually separate the classes. In contrast to the learning process of the traditional neural networks, it is not sufficient for the network to learn good representations of the training classes, as the testing classes are distinct and they are not presented in training. However, it is desirable to learn features which distinguish the existing classes. The evaluation process consists of two distinct stages of the following format [4]:  
Step 1: Given \(k\) examples (value of \(k\)-shot), if \(k=1\), then the process is called _one-shot_; if \(k=5\), _five-shot_, and so on. The parameter \(k\) represents the number of labeled samples given to the algorithm by each class. By considering these samples, which comprise the support set, the network is required to classify and eventually adapt to existing classes. Step 2: Unknown examples of the labeled classes are presented randomly, unlike the ones presented in the previous step, which the network is called to correctly classify. The set of examples in this stage is known as the query set. The above procedure (steps) is repeated many times using random classes and examples which are sampled from the testing-evaluation set. As it is immediately apparent from the description of the evaluation process, as the number of classes increases, the task becomes more difficult, because the network has to decide between several alternatives. This means that _Zero-shot Learning_[5] is clearly more difficult than the _one-shot_, which is more difficult than the _five-shot_, and so on. Although humans have the ability to cope with this process, traditional ANN require many more examples to generalize effectively, in order to achieve the same degree of performance. The limitation of these learning approaches is that the model has access to minimum samples from each class and the validation process is performed by calculating the cross-entropy error of the test set. Specifically, in the cases of one-shot and _Zero-shot Learning_ (ZsL), only one example each of the candidate classes and only meta-data is shown at the evaluation stage.