<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article">
 <front>
  <journal-meta>
   <journal-id journal-id-type="publisher-id">
    jcc
   </journal-id>
   <journal-title-group>
    <journal-title>
     Journal of Computer and Communications
    </journal-title>
   </journal-title-group>
   <issn pub-type="epub">
    2327-5219
   </issn>
   <issn publication-format="print">
    2327-5227
   </issn>
   <publisher>
    <publisher-name>
     Scientific Research Publishing
    </publisher-name>
   </publisher>
  </journal-meta>
  <article-meta>
   <article-id pub-id-type="doi">
    10.4236/jcc.2024.128011
   </article-id>
   <article-id pub-id-type="publisher-id">
    jcc-135620
   </article-id>
   <article-categories>
    <subj-group subj-group-type="heading">
     <subject>
      Articles
     </subject>
    </subj-group>
    <subj-group subj-group-type="Discipline-v2">
     <subject>
      Computer Science 
     </subject>
     <subject>
       Communications
     </subject>
    </subj-group>
   </article-categories>
   <title-group>
    Classification with Convolutional Neural Networks in MapReduce
   </title-group>
   <contrib-group>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Min
      </surname>
      <given-names>
       Chen
      </given-names>
     </name>
    </contrib>
   </contrib-group> 
   <aff id="affnull">
    <addr-line>
     aDepartment of Computer Science, State University of New York at New Paltz, New York, USA
    </addr-line> 
   </aff> 
   <pub-date pub-type="epub">
    <day>
     07
    </day> 
    <month>
     08
    </month>
    <year>
     2024
    </year>
   </pub-date> 
   <volume>
    12
   </volume> 
   <issue>
    08
   </issue>
   <fpage>
    174
   </fpage>
   <lpage>
    190
   </lpage>
   <history>
    <date date-type="received">
     <day>
      18,
     </day>
     <month>
      July
     </month>
     <year>
      2024
     </year>
    </date>
    <date date-type="published">
     <day>
      26,
     </day>
     <month>
      July
     </month>
     <year>
      2024
     </year> 
    </date> 
    <date date-type="accepted">
     <day>
      26,
     </day>
     <month>
      August
     </month>
     <year>
      2024
     </year> 
    </date>
   </history>
   <permissions>
    <copyright-statement>
     © Copyright 2014 by authors and Scientific Research Publishing Inc. 
    </copyright-statement>
    <copyright-year>
     2014
    </copyright-year>
    <license>
     <license-p>
      This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/
     </license-p>
    </license>
   </permissions>
   <abstract>
    Deep learning (DL) techniques, more specifically Convolutional Neural Networks (CNNs), have become increasingly popular in advancing the field of data science and have had great successes in a wide array of applications including computer vision, speech, natural language processing, etc. However, the training process of CNNs is computationally intensive and has high computational cost, especially when the dataset is huge. To overcome these obstacles, this paper takes advantage of distributed frameworks and cloud computing to develop a parallel CNN algorithm. MapReduce is a scalable and fault-tolerant data processing tool that was developed to provide significant improvements in large-scale data-intensive applications in clusters. A MapReduce-based CNN (MCNN) is developed in this work to tackle the task of image classification. In addition, the proposed MCNN adopted the idea of adding dropout layers in the networks to tackle the overfitting problem. Close examination of the implementation of MCNN as well as how the proposed algorithm accelerates learning are discussed and demonstrated through experiments. Results reveal high classification accuracy and significant improvements in speedup, scaleup and sizeup compared to the standard algorithms.
   </abstract>
   <kwd-group> 
    <kwd>
     Distributed System
    </kwd> 
    <kwd>
      Image Classification
    </kwd> 
    <kwd>
      CNNs
    </kwd> 
    <kwd>
      MapReduce
    </kwd> 
    <kwd>
      Overfitting
    </kwd>
   </kwd-group>
  </article-meta>
 </front>
 <body>
  <sec id="s1">
   <title>1. Introduction</title>
   <p>Image classification is a challenging task and numerous efforts have been made to solve this problem. In recent studies, Deep Learning (DL) techniques presented better predictive performance than traditional machine learning algorithms in many domains, including image classification. Convolutional Neural Networks (CNNs) <xref ref-type="bibr" rid="scirp.135620-1">
     [1]
    </xref> is a deep learning technique that has gained global recognition in computer vision systems in recent years.</p>
   <p>CNN has reached state-of-art performance in a number of applications including image classification <xref ref-type="bibr" rid="scirp.135620-2">
     [2]
    </xref>-<xref ref-type="bibr" rid="scirp.135620-4">
     [4]
    </xref>, detection <xref ref-type="bibr" rid="scirp.135620-5">
     [5]
    </xref>-<xref ref-type="bibr" rid="scirp.135620-7">
     [7]
    </xref> and segmentation <xref ref-type="bibr" rid="scirp.135620-8">
     [8]
    </xref> <xref ref-type="bibr" rid="scirp.135620-9">
     [9]
    </xref>. Compared to standard machine learning algorithms, deep learning methods learn from experience and through that, form a hierarchy of concepts to get a better understanding of the world. Learning through experience avoids the need for humans to manually engineer hand-crafted features which is a main advantage of deep models over traditional methods. Additionally, certain deep learning algorithms make explicit assumptions about the input data that allow them to perform remarkably well in specific tasks. For example, CNNs make assumptions about the properties inherent in images such as stationary of statistics and locality of pixel dependencies which allow for fewer connections and parameters, leading to less computational demands and easier training. Furthermore, because the design of CNNs was inspired by the human visual system, they can be trained to recognize complex visual patterns and rich features that have been shown to even outshine human performance.</p>
   <p>Convolutional neural networks (CNNs) are similar to traditional artificial neural networks (ANNs). Both perform a feedforward and backward pass which includes computing a linear transformation between the input and weights, followed by a non-linear activation function, calculating the error and then backpropagating the error back to the weights. Both systems are also made up of a series of neurons but the connections between these neurons are how they differ.</p>
   <p>In neural networks, each neuron in one layer operates independently and doesn’t share any connections but instead was connected to each neuron in the next layer. This is problematic when working with images because a 300 × 300 × 3 image would result in neurons with 270,000 weights which is computationally costly. In addition, the network will also need to be a lot larger to deal with this scale of input. As a result, it is impossible to have unlimited computational power and time to train huge ANNs.</p>
   <p>Another reason is that huge ANNs would lead to overfitting. Overfitting occurs when a trained model fits the noise of the data thus hampering its ability to generalize well to new examples. Reducing the complexity of ANNs can stop or reduce the effects of overfitting. The less parameters require to train, the less likely the network will overfit to improve the predictive performance of the model.</p>
   <p>Luckily, CNNs specialize in dealing with images by utilizing convolution along with local receptive fields to help control the amount of parameters. Imagine taking a filter of size 5 × 5, and sliding it across an entire image to find features that match the filter. This is exactly how convolution is performed but the filter is initialized with weights and dot products are computed between the weights and input image exactly as in neural networks. With convolution, instead of neurons being connected in a fully connected manner, neurons in one layer are only connected to a small region of the layer before it which is controlled by the size of the filter or receptive field.</p>
   <p>Despite these remarkable qualities, a major drawback with deep learning models is that they require large amounts of data in order to perform well. Only through the rise of large annotated datasets such as ImageNet <xref ref-type="bibr" rid="scirp.135620-4">
     [4]
    </xref> and the growth of graphics processor units (GPUs) have CNNs been able to achieve the recent success that they’ve had. Additionally, with the rise of big data and increased complexity of tasks, training CNNs incur a high computational cost which is infeasible on a single machine without large computational resources. Moreover, CNN architectures have become increasingly deeper which on one hand, allows for better feature representations but also increases the complexity of the network. ResNet <xref ref-type="bibr" rid="scirp.135620-10">
     [10]
    </xref> is about twenty times deeper than AlexNet <xref ref-type="bibr" rid="scirp.135620-4">
     [4]
    </xref> and eight times deeper than VGGNet <xref ref-type="bibr" rid="scirp.135620-3">
     [3]
    </xref>. State-of-art CNNs require a massive number of parameters that need to be tuned during training which leads to extensive training times and models that are highly difficult to optimize.</p>
   <p>To cope with increasingly complex tasks and volumes of data, the evolution of CNNs has severely impacted their efficiency. CNNs are innately both data and computationally intensive which makes speed and storage capacity a large limiting factor in reaching performance and scalability requirements. To overcome the imposed time and space obstacles, this work implements a parallelized CNN algorithm based on MapReduce <xref ref-type="bibr" rid="scirp.135620-11">
     [11]
    </xref> (MCNN) on a cloud computing cluster. The developed algorithm takes advantage of the computational structures inherent in CNNs that lends them to parallelization to achieve increased processing speed. Additionally, the use of cloud computing provides an economical means to facilitate data intensive applications by providing workload balancing and resource scheduling.</p>
   <p>The rest of the paper is organzied as follows. Section 2 reviews some related CNN work in literature. Section 3 briefly introduces CNN algorithm. Section 4 describes in detail the design and implementation of the distributed MCNN algorithm. Section 5 evaluates the performance of the proposed MCNN in a MapReduce environment. Section 6 concludes the paper and points out some future work.</p>
  </sec><sec id="s2">
   <title>2. Related Work</title>
   <p>Due to the shortcomings of the traditional process, deep learning algorithms, more specifically CNN, are widely used for image classification. Commonly image processing tasks successfully addressed by CNN are handwritten and image recognition problems <xref ref-type="bibr" rid="scirp.135620-12">
     [12]
    </xref>.</p>
   <p>Besides the handwritten problem, <xref ref-type="bibr" rid="scirp.135620-13">
     [13]
    </xref> uses a variation of convolutional networks, namely Neocognitron (NEO), for face recognition task. The positive rates for the NEO decline significantly when the classifier is tested under more unconstrainted conditions. In <xref ref-type="bibr" rid="scirp.135620-14">
     [14]
    </xref>, a visual automated system using CNN was adopted for visual tunnel inspection. A deep convolutional networks (ConvNets) is adopted to localize wooden knots in images of oak board. A significant improvement has been found by comparing to support vector machine. As in other studies, CNN outperformed the traditional machine learning techniques in <xref ref-type="bibr" rid="scirp.135620-15">
     [15]
    </xref>. This study investigated CNN applied to defect detection in different materials. By comparing to other studies, CNN does not need a feature extraction process due to its embedded module.</p>
   <p>A data mining approach is proposed in <xref ref-type="bibr" rid="scirp.135620-16">
     [16]
    </xref> to improve the local binary patterns in texture analysis. Three different descriptors with three spatial resolutions are used to evaluate the proposed approach in texture images. In <xref ref-type="bibr" rid="scirp.135620-17">
     [17]
    </xref>, a J48 classifier is built to evaluate colonoscopy exam images using texture descriptors. As shown in the results, the proposed classifier has achieved a relatively high sensitivity. In <xref ref-type="bibr" rid="scirp.135620-18">
     [18]
    </xref>, a CNN with combination of texture-based feature extraction techniques are used for biological image classification. The proposed algorithm is compared with traditional techniques such as decision tree, neural networks, nearest neighbors and support vector machine. The proposed CNN algorithm has achieved predictive performance superior to traditional classification techniques.</p>
   <p>For image classification through MapReduce, the literature presents the improvement of statellite images in <xref ref-type="bibr" rid="scirp.135620-19">
     [19]
    </xref>. A system based on Hadoop that implements the MapReduce programming model is used to improve the classification of large-scale remote sensing images. In <xref ref-type="bibr" rid="scirp.135620-20">
     [20]
    </xref>, a MapReduce-based distributed SVM is used for image classification annotation. SVM with bagging have shown better performance in classification than a single SVM. The proposed algorithm re-samples the training dataset based on bootstrapping. The training time is reduced significantly with a high level of accuracy in classification. A parallel design and realization method for particle swarm optimization with back-propagation neural network is proposed in <xref ref-type="bibr" rid="scirp.135620-21">
     [21]
    </xref> to improve the classification accuracy and runtime efficiency of the back-propagation neural network. The results demonstrate both higher accuracy and improved time efficiency from applying parallel processing on big data.</p>
   <p>To summarize, research on CNN algorithms has been carried out from various dimensions, but mainly focuses on improving the classification accuracy. Improving the runtime efficiency of a CNN still remains an open challenge. This motivates the design of a Mapreduce-based CNN, which is an efficient distributed CNN algorithm building on a highly scalable MapReduce implementation for image classification.</p>
  </sec><sec id="s3">
   <title>3. Convolutional Neural Networks</title>
   <p>Convolutional neural networks are comprised of three types of layers: convolutional layers, pooling layers and fully-connected layers.</p>
   <sec id="s3_1">
    <title>3.1. Convolutional Layer</title>
    <p>The convolutional layer determine the output of neurons. These neurons are connected to local regions of the input through the calculation of the scalar product between their weights and the region connected to the input volume. The convolutional layer keep the local connection weights fixed for the next layer in order to reduce the size of parameters. It provides an opportunity to detect and recognize features regardless of their positions in the image.</p>
    <p>
     <xref ref-type="bibr" rid="scirp.135620-"></xref>There exists several hyper-parameters (values set before training) that can be adjusted when performing convolution: the filter size, padding and stride are three. First, the size of the receptive field controls the connection of neurons to their input spatially (width and height) but always through the entire depth. For example, using a receptive field of size 5 × 5 on a 300 × 300 × 3 image leads to neurons with 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mn>
         5 
       </mn> 
       <mo>
         × 
       </mo> 
       <mn>
         5 
       </mn> 
       <mo>
         × 
       </mo> 
       <mn>
         3 
       </mn> 
       <mo>
         = 
       </mo> 
       <mn>
         75 
       </mn> 
      </mrow> 
     </math> weights. A large receptive field may capture more context but could also lead to a loss in finer details. Secondly, notice how in <xref ref-type="fig" rid="fig1">
      Figure 1
     </xref> the border of the input is padded with zeros. This is set to preserve the size of the input and output so that additional convolutions will not cause the input to shrink too quickly, resulting in information loss. Lastly, the stride determines how many pixels to move when the filter is slid across the image; a stride of one or two is commonly used in practice.</p>
    <p>The output size after convolution can be computed by the function:</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mrow> 
        <mrow> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <mi>
             W 
           </mi> 
           <mo>
             − 
           </mo> 
           <mi>
             F 
           </mi> 
           <mo>
             + 
           </mo> 
           <mn>
             2 
           </mn> 
           <mi>
             P 
           </mi> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
        </mrow> 
        <mo>
          / 
        </mo> 
        <mi>
          S 
        </mi> 
       </mrow> 
       <mo>
         + 
       </mo> 
       <mn>
         1 
       </mn> 
      </mrow> 
     </math> (1)</p>
    <p>where W is the input size, F the filter size, S the stride and P the amount of padding used. For example with an input (W) = 5 × 5, filter size (F) = 3 × 3, stride (S) = 2, padding (P) = 1 then the output size = 3 × 3.</p>
    <p>Just as with neural networks, after a linear transformation is applied between the input and weights, an activation function is used. The ReLU (Rectified Linear Unit) <xref ref-type="bibr" rid="scirp.135620-22">
      [22]
     </xref> is a common activation function used with CNNs. It simply computes 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         f 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         = 
       </mo> 
       <mi>
         max 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mn>
           0 
         </mn> 
         <mo>
           , 
         </mo> 
         <mi>
           x 
         </mi> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> which removes negative values by placing a threshold at zero. See <xref ref-type="fig" rid="fig1">
      Figure 1
     </xref> for an illustration.</p>
    <fig id="fig1" position="float">
     <label>Figure 1</label>
     <caption>
      <title>Figure 1. Convolution performed on a single channel of an image. A filter is slid across the entire input, computing an element-wise product between each input pixel and the filter then summing the results to form the output elements. Here padding = 1 and stride = 2.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId18.jpeg?20240829094138" />
    </fig>
   </sec>
   <sec id="s3_2">
    <title>3.2. Pooling Layer</title>
    <p>The aim of pooling layer is to gradually reduce the dimensionality of the representation in order to further reduce the number of parameters and the computational complexity of the model. General pooling layers are consist of pooling neurons that are able to perform a multitude of common operations including LeRu normalization, and average pooling. The pooling layer operates over each activation map in the input and scales its dimensionality using a “MAX” function. This is also called max-pooling layer. Because of the destructive nature of the pooling layer, the stride and filters of the pooling layers are two generally observed methods of max pooling. Both are set to 2 × 2 to allow the layer to extend through the entirety of the spatial dimensionality of the input.</p>
    <p>Pooling layers act as a way to reduce the size of the input, number of parameters and computational cost; it also helps control overfitting. The most commonly used pooling layer is max pooling which takes the max element of a region in the input and discards the rest. <xref ref-type="fig" rid="fig2">
      Figure 2
     </xref> shows an example of the pooling layer.</p>
    <fig id="fig2" position="float">
     <label>Figure 2</label>
     <caption>
      <title>Figure 2. Max pooling operation performed using a filter of size 2 × 2 and stride = 2.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId19.jpeg?20240829094138" />
    </fig>
   </sec>
   <sec id="s3_3">
    <title>3.3. Fully-Connected Layer</title>
    <p>The fully-connected layer is analogous to the way that neurons are arranged in traditional forms of ANNs. It contains neurons of which are directly connected to the neurons in the two adjacent layers.</p>
    <p>Convolutional neural networks are essentially a series of convolution and pooling layers stacked together with a fully connected layer inserted before the output layer. Additional layers help the network learn more complex features. For example, if the network is fed the image of a face then the first layer will detect low-level features such as edges while deeper layers detect higher level features such as eyes or a nose and eventually an entire face.</p>
    <p>An example of a stack of layers for CNN is shown in <xref ref-type="fig" rid="fig3">
      Figure 3
     </xref>.</p>
   </sec>
  </sec><sec id="s4">
   <title>4. The Design of MapReduce-Based CNN (MCNN)</title>
   <p>Convolutional Neural Networks is one deep learning algorithm that can benefit from the parallelized computation offered by the MapReduce programming model. CNN iteratively adjusts weights in the network by computing their partial gradients after each set of the training data is propagated through the network. Thus parallelization during the training phase can be accomplished by distributing the data into a number of chunks. Each data chunk can then be fed to several CNNs and each CNN can be trained independently in parallel. The outputs can then be aggregated to produce the final results which are then used to update the weights for the next iteration. <xref ref-type="fig" rid="fig4">
     Figure 4
    </xref> below shows a high level overview of the procedure.</p>
   <fig id="fig3" position="float">
    <label>Figure 3</label>
    <caption>
     <title>Figure 3. An example of CNN architecture.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId20.jpeg?20240829094140" />
   </fig>
   <fig id="fig4" position="float">
    <label>Figure 4</label>
    <caption>
     <title>Figure 4. A flowchart of the proposed distributed CNN.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId21.jpeg?20240829094140" />
   </fig>
   <p>The mappers take as input with the training data (x,y) and a set of randomly initialized weights 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mrow> 
       <mo>
         [ 
       </mo> 
       <mrow> 
        <msub> 
         <mi>
           w 
         </mi> 
         <mn>
           1 
         </mn> 
        </msub> 
        <mo>
          , 
        </mo> 
        <msub> 
         <mi>
           w 
         </mi> 
         <mn>
           2 
         </mn> 
        </msub> 
        <mo>
          , 
        </mo> 
        <mo>
          ⋯ 
        </mo> 
        <mo>
          , 
        </mo> 
        <msub> 
         <mi>
           w 
         </mi> 
         <mi>
           n 
         </mi> 
        </msub> 
       </mrow> 
       <mo>
         ] 
       </mo> 
      </mrow> 
     </mrow> 
    </math>. The set of weights contain n weights to represent the number of hidden layers in the network so 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <msub> 
       <mi>
         w 
       </mi> 
       <mi>
         i 
       </mi> 
      </msub> 
     </mrow> 
    </math> corresponds to the weights for hidden layer i. The training data is represented as a set of tuples (x,y) where x is a training instance and y is the ground truth label for that instance. Each mapper initializes the network with the given set of weights and the network is trained using the input samples. The output is a set of newly trained updated Weights 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mrow> 
       <mo>
         [ 
       </mo> 
       <mrow> 
        <mtext>
          Δ 
        </mtext> 
        <msub> 
         <mi>
           w 
         </mi> 
         <mn>
           1 
         </mn> 
        </msub> 
        <mo>
          , 
        </mo> 
        <mtext>
          Δ 
        </mtext> 
        <msub> 
         <mi>
           w 
         </mi> 
         <mn>
           2 
         </mn> 
        </msub> 
        <mo>
          , 
        </mo> 
        <mo>
          ⋯ 
        </mo> 
        <mo>
          , 
        </mo> 
        <mtext>
          Δ 
        </mtext> 
        <msub> 
         <mi>
           w 
         </mi> 
         <mi>
           n 
         </mi> 
        </msub> 
       </mrow> 
       <mo>
         ] 
       </mo> 
      </mrow> 
     </mrow> 
    </math> which is then fed to the reducer. After each iteration, the mappers receive a set of updated weights which are processed through the network until the max number of iterations is reached. The pseudo code for the map function is shown in Algorithm 1.</p>
   <fig id="fig5" position="float">
    <label>Figure 5</label>
    <caption>
     <title>The reducer receives as input the intermediate output by the mappers and aggregates the weights produced from each of the mappers. Since the position of weights in the output of mappers are sorted according to the hidden layer they belong to, the reducer can simply aggregate weights according to their index. The aggregation computes a cumulative sum over weights and then divides by the number of training instances in the batch to form an average of weights. The final result is used to update the weights in the network and sent to the mapper for the next iteration. The pseudo code for the reduce function is shown in Algorithm 2.<p class="imgGroupCss_v"><img class=" imgMarkCss lazy" data-original="https://html.scirp.org/file/1732825-rId29.jpeg?20240829094140" /></p>MapReduce jobs utilize a driver to serve as the scheduler for tasks. The driver creates a directed acyclic graph (DAG) or execution plan for the program which are then divided into smaller tasks to be executed. communicates with Hadoop, determines which map and reduce classes are used and specifies the configuration of jobs. Configurations are provided by the user and include the path to the training data, path of the output, training parameters and configurations for the network. Training parameters include number of training samples, number of validation samples, max number of iterations, max epochs and batch size. Network configurations include the size of the receptive field, stride, number and type of layers, learning rate and optimization method. The pseudo code for the driver function is shown in Algorithm 3.<p class="imgGroupCss_v"><img class=" imgMarkCss lazy" data-original="https://html.scirp.org/file/1732825-rId30.jpeg?20240829094140" /></p>5. Experiments and Results5.1. MCNN Architecture and ParametersThe proposed MCNN architecture used in experiments is an adaptation of VGGNet. The input is 32 × 32 RGB images with 49,000 images used for training and 1000 for validation. The number of training iterations is set at a maximum of 60 epochs. No data augmentation is used, training data mean subtraction is the only pre-processing step. See <xref ref-type="table" rid="table1">
       Table 1
      </xref> for more details on training parameters.The network contains 10 weighted layers: 8 convolutional (conv.) layers and 2 fully-connected (FC) layers. The number of channels begins with 64 in the first layer and doubles after every max-pooling layer until it reaches 512 in the last convolution layer. Small 3 × 3 receptive fields and stride 1 are used throughout the network. Every conv. layer is followed by the ReLU non-linearity. The initialization <xref ref-type="bibr" rid="scirp.135620-23">
       [23]
      </xref> is used at every weighted layer. Two fully-connected layers are inserted after the stack of convolutional layers. The first fully-connected layer contains 500 channels and the second contains 10 channels for the 10 classes contained in the CIFAR-10 dataset. The final layer is the soft-max layer to obtain class probabilities and categorical output. Configuration details are outlined in <xref ref-type="table" rid="table2">
       Table 2
      </xref>.<xref ref-type="bibr" rid="scirp.135620-"></xref>Table 1. CNN Architecture details. The convolutional layer parameters are denoted as conv&lt;receptive field size&gt; - &lt;number of channels&gt;.
      <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
 
       <tr> 
  
        <td class="custom-bottom-td custom-top-td acenter" width="45.34%">Input (32 × 32 RGB image)<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="custom-top-td acenter" width="45.34%">conv3-64<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="custom-bottom-td acenter" width="45.34%">conv3-64<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="custom-top-td acenter" width="45.34%">maxpool<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="acenter" width="45.34%">conv3-128<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="custom-bottom-td acenter" width="45.34%">conv3-128<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="custom-top-td acenter" width="45.34%">maxpool<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="acenter" width="45.34%">conv3-256<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="custom-bottom-td acenter" width="45.34%">conv3-256<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="custom-top-td acenter" width="45.34%">maxpool<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="acenter" width="45.34%">conv3-512<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="custom-bottom-td acenter" width="45.34%">conv3-512<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="custom-bottom-td custom-top-td acenter" width="45.34%">maxpool<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="custom-bottom-td custom-top-td acenter" width="45.34%">FC-500<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="custom-bottom-td custom-top-td acenter" width="45.34%">FC-10<p style="text-align:center"></p></td> 
 
       </tr> 
 
       <tr> 
  
        <td class="custom-top-td acenter" width="45.34%">soft-max<p style="text-align:center"></p></td> 
 
       </tr>

      </table></title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId28.jpeg?20240829094139" />
   </fig>
   <table-wrap id="table1">
    <label>
     <xref ref-type="table" rid="table1">
      Table 1
     </xref></label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.135620-"></xref>Table 2. Model parameters.</title>
    </caption>
    <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td class="custom-bottom-td custom-top-td acenter" width="22.67%">Train samples<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td custom-top-td acenter" width="22.67%">Validation samples<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td custom-top-td acenter" width="22.67%">Batch size<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td custom-top-td acenter" width="22.67%">Max Epochs<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td custom-top-td acenter" width="22.67%">Optimizer<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td custom-top-td acenter" width="22.67%">Learning Rate<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="custom-top-td acenter" width="22.67%">49,000<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="22.67%">1000<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="22.67%">100<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="22.67%">60<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="22.67%">Adam<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="22.67%">0.0001<p style="text-align:center"></p></td> 
     </tr> 
    </table>
   </table-wrap>
   <sec id="s4_1">
    <title>5.2. Distributed Computing Environment</title>
    <p>The algorithm is deployed on a Hadoop cluster using Amazon Web Service EMR which provides economical, large capacity, remote computing services. Parallel MCNN is implemented using Spark, an extension of the MapReduce framework which supports fast in memory computations, specifically designed for iterative machine learning algorithms. The proposed parallel algorithm is run using the following distributed computing environment:</p>
    <p>
     <xref ref-type="table" rid="table3">
      Table 3
     </xref> provides more details on the cluster specifications.</p>
    <table-wrap id="table2">
     <label>
      <xref ref-type="table" rid="table2">
       Table 2
      </xref></label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.135620-"></xref>Table 3. Cluster details.</title>
     </caption>
     <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td class="custom-bottom-td custom-top-td acenter" width="27.60%">Namenode<p style="text-align:center"></p></td> 
       <td class="custom-bottom-td custom-top-td acenter" width="27.60%">Datanodes<p style="text-align:center"></p></td> 
       <td class="custom-bottom-td custom-top-td acenter" width="17.14%">Bandwidth<p style="text-align:center"></p></td> 
       <td class="custom-bottom-td custom-top-td acenter" width="14.99%">Hadoop<p style="text-align:center"></p></td> 
       <td class="custom-bottom-td custom-top-td acenter" width="12.68%">Spark<p style="text-align:center"></p></td> 
      </tr> 
      <tr> 
       <td class="custom-top-td acenter" width="27.60%">CPU: E5@2.4 GHz <p style="text-align:center"></p>Memory: 32 GB <p style="text-align:center"></p>OS: Linux<p style="text-align:center"></p></td> 
       <td class="custom-top-td acenter" width="27.60%">CPU: E5@2.4 GHz <p style="text-align:center"></p>Memory: 32 GB <p style="text-align:center"></p>OS: Linux<p style="text-align:center"></p></td> 
       <td class="custom-top-td acenter" width="17.14%">1 Gbps<p style="text-align:center"></p></td> 
       <td class="custom-top-td acenter" width="14.99%">2.8.4<p style="text-align:center"></p></td> 
       <td class="custom-top-td acenter" width="12.68%">2.3.1<p style="text-align:center"></p></td> 
      </tr> 
     </table>
    </table-wrap>
   </sec>
   <sec id="s4_2">
    <title>5.3. Experimental Results</title>
    <p>Experiments conducted to evaluate the performance of the proposed MCNN include measurements of accuracy, speedup, scaleup and sizeup. The dataset used in all experiments come from the CIFAR-10 <xref ref-type="bibr" rid="scirp.135620-24">
      [24]
     </xref> dataset which contains 50,000 RGB images of size 32 × 32.</p>
    <p>The initial proposed algorithm, MCNN1, achieves 89% accuracy on both training and validation data. However, overfitting is an issue using the MCNN1 as seen by the gap between the training and validation curves in <xref ref-type="fig" rid="fig5">
      Figure 5
     </xref> and <xref ref-type="fig" rid="fig6">
      Figure 6
     </xref>, respectively. In order to overcome this problem, dropout <xref ref-type="bibr" rid="scirp.135620-25">
      [25]
     </xref> layers are introduced and added after every max pool layer and after the first fully connected layer. A dropout value of 0.4 was used throughout the network. The modified version of the proposed algorithm, namely MCNN2, shows a better performance of the network after adding dropout. The classification accuracies for training and validation data have improved significantly.</p>
    <p>
     <xref ref-type="fig" rid="fig7">
      Figure 7
     </xref> and <xref ref-type="fig" rid="fig8">
      Figure 8
     </xref> compare the effect of dropout on both training and validation accuracy. Dropout essentially adds noise to the network by ignoring a fraction of nodes during training which reduces co-adaptation of neurons. Thus neurons are forced to learn independently and not over rely on one another. The effect is shown by the wider spread loss curve in <xref ref-type="fig" rid="fig6">
      Figure 6
     </xref> and lower training accuracy shown in <xref ref-type="fig" rid="fig7">
      Figure 7
     </xref>. But dropout provides the added benefit of improved generalization as shown from the higher validation accuracy achieved in <xref ref-type="fig" rid="fig8">
      Figure 8
     </xref>. Furthermore, <xref ref-type="fig" rid="fig8">
      Figure 8
     </xref> reveals that dropout requires a greater number of training epochs to take effect. From epochs 0 to 20 the network without dropout consistently receives higher validation accuracy. Between 20 to 30 epochs, both networks are effectively equal in accuracy but not until after 30 epochs is when dropout reveals its performance boost.</p>
    <fig id="fig6" position="float">
     <label>Figure 6</label>
     <caption>
      <title>Figure 5. Training loss without Dropout.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId31.jpeg?20240829094142" />
    </fig>
    <fig id="fig7" position="float">
     <label>Figure 7</label>
     <caption>
      <title>Figure 6. Training loss with Dropout.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId32.jpeg?20240829094142" />
    </fig>
    <p>Improvements in speed and scalability of the proposed algorithm is also measured. Speedup is defined as the ability for a system to yield m times speedup with m times the number of nodes. To measure speedup the number of samples were kept constant at 50,000 while the number of nodes were increased by 2, 4, 8, 16, 32, and 64 respectively. For each number of nodes, five trials were conducted and the average time was recorded. Results are shown in <xref ref-type="fig" rid="fig9">
      Figure 9
     </xref> where the blue line represents MCNN1, which is the proposed MCNN without dropout layers. The red line represents the MCNN2 which is the proposed MCNN with dropout layers. The parallel algorithm achieves close to linear speedup in MCNN1 and MCNN2. Exact linearity isn’t achieved due to the communication overhead with a large number of nodes. Also, the MCNN2 perform better than MCNN1 in</p>
    <fig id="fig8" position="float">
     <label>Figure 8</label>
     <caption>
      <title>Figure 7. Train accuracy with MCNN1 and MCNN2.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId33.jpeg?20240829094143" />
    </fig>
    <fig id="fig9" position="float">
     <label>Figure 9</label>
     <caption>
      <title>Figure 8. Validation accuracy with MCNN1 and MCNN2.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId34.jpeg?20240829094143" />
    </fig>
    <p>terms of speed up due to the reduce number of neurons used in the networks.</p>
    <p>Scaleup measures the ability of a m-times larger system to perform a m-times larger task at the same time as the original system. To evaluate scaleup the dataset size is increased in proportion to the number of nodes in the system. The number of samples is increased from 10 k, 20 k, 30 k, 40 k and the number of nodes is increased from 1 to 4. Five trials for each sample size was conducted and the average time was recorded. <xref ref-type="fig" rid="fig10">
      Figure 10
     </xref> depicts the results of the scaleup</p>
    <fig id="fig10" position="float">
     <label>Figure 10</label>
     <caption>
      <title>Figure 9. Speedup of MCNN1 and MCNN2.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId35.jpeg?20240829094143" />
    </fig>
    <fig id="fig11" position="float">
     <label>Figure 11</label>
     <caption>
      <title>Figure 10. Scaleup of MCNN1 and MCNN2.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId36.jpeg?20240829094143" />
    </fig>
    <p>experiments. Again, MCNN2 perform better than MCNN1 as the number of nodes increases. Results reveal that scaleup improves as the number of nodes in the system increases.</p>
    <p>Sizeup increases the size of the input data by a factor of m while holding the number of machines in the system constant. To measure sizeup, experiments are run on 1, 2 and 4 machines respectively. For each number of machines, the dataset size is increased from 10 k, 20 k, 40 k, 80 k, and 160 k samples. The results in <xref ref-type="fig" rid="figFigures 11-13">
      Figures 11-13
     </xref> show the proposed algorithm performs well in terms of sizeup</p>
    <fig id="fig12" position="float">
     <label>Figure 12</label>
     <caption>
      <title>Figure 11. Sizeup of MCNN1 and MCNN2 using one node.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId37.jpeg?20240829094143" />
    </fig>
    <fig id="fig13" position="float">
     <label>Figure 13</label>
     <caption>
      <title>Figure 12. Sizeup of MCNN1 and MCNN2 using two nodes.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId38.jpeg?20240829094143" />
    </fig>
    <p>but that as the number of machines increases, sizeup performance is hampered due to the communication overhead between nodes.</p>
    <p>Overall, the MCNN2 performs better than MCNN1 in speedup, scaleup and sizeup. However, as the number of nodes increases, the linearity decreases due to the communication overhead of Hadoop clusters. But MapReduce framework is still a good approach in deep learning as the significantly reduction of computation and the use of cheap commodity computers.</p>
    <fig id="fig14" position="float">
     <label>Figure 14</label>
     <caption>
      <title>Figure 13. Sizeup of MCNN1 and MCNN2 using four nodes.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/1732825-rId39.jpeg?20240829094142" />
    </fig>
   </sec>
  </sec><sec id="s5">
   <title>6. Conclusions</title>
   <p>With the rise of big data and increased complexity of tasks, the efficiency of deep learning algorithms have been severely impacted by the nature of long training times and high computational cost. To be able to solve even greater problems of the future, learning algorithms must maintain high speed and accuracy through economical means. MapReduce <xref ref-type="bibr" rid="scirp.135620-11">
     [11]
    </xref> is one of the most efficient big data solutions, which enables the processing of a massive volume of data in parallel with many low-end computing nodes. This programming paradigm is a scalable and fault-tolerant data processing tool that was developed to provide significant improvements in large-scale data-intensive applications in clusters. To that end, this paper takes advantage of the MapReduce framework to develop a parallel CNN algorithm (MCNN). The proposed MCNN achieves high classification accuracy in image classification and close to linear speedup, scaleup and sizeup. The results demonstrate that the MapReduce framework is an effective tool to improve the speed and scalability of CNNs.</p>
   <p>In terms of directions for future work, several ideas come to mind. Experiments conducted here utilize images from CIFAR-10. A much larger dataset such as ImageNet with additional compute nodes could be used to analyze how this affects performance in speedup, scaleup and sizeup. Additionally, instead of image classification, other computer vision tasks such as image segmentation or object detection could be applied. Trying other CNN architectures such as ResNet or GoogLeNet <xref ref-type="bibr" rid="scirp.135620-26">
     [26]
    </xref> and examining their performance in accuracy and speed of convergence is another interesting path. Lastly, ensemble methods similar to the work done in <xref ref-type="bibr" rid="scirp.135620-27">
     [27]
    </xref> can also be explored.</p>
  </sec>
 </body><back>
  <ref-list>
   <title>References</title>
   <ref id="scirp.135620-ref1">
    <label>1</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Lecun, Y., Bottou, L., Bengio, Y. and Haffner, P. (1998) Gradient-Based Learning Applied to Document Recognition. Proceedings of the IEEE, 86, 2278-2324. &gt;https://doi.org/10.1109/5.726791
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref2">
    <label>2</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Egmont-Petersen, M., de Ridder, D. and Handels, H. (2002) Image Processing with Neural Networks—A Review. Pattern Recognition, 35, 2279-2301. &gt;https://doi.org/10.1016/s0031-3203(01)00178-9
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref3">
    <label>3</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Simonyan, K. and Zisserman, A. (2014) Very Deep Convolutional Networks for Large-Scale Image Recognition. arXiv: 1409.1556. &gt;https://doi.org/10.48550/arXiv.1409.1556 
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref4">
    <label>4</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Russakovsky, O., Deng, J., Su, H., Krause, J., Satheesh, S., Ma, S., et al. (2015) ImageNet Large Scale Visual Recognition Challenge. International Journal of Computer Vision, 115, 211-252. &gt;https://doi.org/10.1007/s11263-015-0816-y
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref5">
    <label>5</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Nowlan, S.J. and Platt, J.C. (1994) A Convolutional Neural Network Hand Tracker. Proceedings of the 7th International Conference on Neural Information Processing Systems, Denver Colorado, 1 January 1994, 901-903.
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref6">
    <label>6</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Everingham, M., Eslami, S.M.A., Van Gool, L., Williams, C.K.I., Winn, J. and Zisserman, A. (2014) The Pascal Visual Object Classes Challenge: A Retrospective. International Journal of Computer Vision, 111, 98-136. &gt;https://doi.org/10.1007/s11263-014-0733-5
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref7">
    <label>7</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Lin, T., Maire, M., Belongie, S., Hays, J., Perona, P., Ramanan, D., et al. (2014) Microsoft COCO: Common Objects in Context. Computer Vision—ECCV 2014, Zurich, 6-12 September 2014, 740-755. &gt;https://doi.org/10.1007/978-3-319-10602-1_48
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref8">
    <label>8</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Ciresan, D., Giusti, A., Gambardella, L. and Schmidhuber, J. (2012) Deep Neural Networks Segment Neuronal Membranes in Electron Microscopy Images. Advances in Neural Information Processing Systems, 25, 2843-2851.
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref9">
    <label>9</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Girshick, R., Donahue, J., Darrell, T. and Malik, J. (2014) Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation. 2014 IEEE Conference on Computer Vision and Pattern Recognition, Columbus, 23-28 June 2014, 580-587. &gt;https://doi.org/10.1109/cvpr.2014.81
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref10">
    <label>10</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     He, K., Zhang, X., Ren, S. and Sun, J. (2016) Deep Residual Learning for Image Recognition. 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Las Vegas, 27-30 June 2016, 770-778. &gt;https://doi.org/10.1109/cvpr.2016.90
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref11">
    <label>11</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Leung, J. and Chen, M. (2019) Image Recognition with MapReduce Based Convolutional Neural Networks. 2019 IEEE 10th Annual Ubiquitous Computing, Electronics&amp;Mobile Communication Conference (UEMCON), New York, 10-12 October 2019, 119-125. &gt;https://doi.org/10.1109/uemcon47517.2019.8992932
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref12">
    <label>12</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Cun, Y.L., Boser, B., Denker, J.S., Henderson, D., Howar, R.E., Hubbard, W. and Jackel, L.D. (1990) Handwritten Digit Recognition with a Back-Propagation Network. Advances in Neural Information Processing Systems, 160, 396-404.
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref13">
    <label>13</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Nebauer, C. (1998) Evaluation of Convolutional Neural Networks for Visual Recognition. IEEE Transactions on Neural Networks, 9, 685-696. &gt;https://doi.org/10.1109/72.701181
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref14">
    <label>14</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Norlander, R., Grahn, J. and Maki, A. (2015) Wooden Knot Detection Using Convnet Transfer Learning. Image Analysis, Copenhagen, 15-17 June 2015, 263-274. &gt;https://doi.org/10.1007/978-3-319-19665-7_22
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref15">
    <label>15</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Park, J., Kwon, B., Park, J. and Kang, D. (2016) Machine Learning-Based Imaging System for Surface Defect Inspection. International Journal of Precision Engineering and Manufacturing-Green Technology, 3, 303-310. &gt;https://doi.org/10.1007/s40684-016-0039-x
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref16">
    <label>16</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Kwak, J.T., Xu, S. and Wood, B.J. (2015) Efficient Data Mining for Local Binary Pattern in Texture Image Analysis. Expert Systems with Applications, 42, 4529-4539. &gt;https://doi.org/10.1016/j.eswa.2015.01.055
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref17">
    <label>17</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Oliva, J.T., Lee, H.D., Spolaôr, N., Coy, C.S.R. and Wu, F.C. (2016) Prototype System for Feature Extraction, Classification and Study of Medical Images. Expert Systems with Applications, 63, 267-283. &gt;https://doi.org/10.1016/j.eswa.2016.07.008
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref18">
    <label>18</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Affonso, C., Rossi, A.L.D., Vieira, F.H.A. and de Leon Ferreira de Carvalho, A.C.P. (2017) Deep Learning for Biological Image Classification. Expert Systems with Applications, 85, 114-122. &gt;https://doi.org/10.1016/j.eswa.2017.05.039
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref19">
    <label>19</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Chebbi, I., Boulila, W. and Farah, I.R. (2016) Improvement of Satellite Image Classification: Approach Based on Hadoop/MapReduce. 2016 2nd International Conference on Advanced Technologies for Signal and Image Processing (ATSIP), Monastir, 21-23 March 2016, 31-34. &gt;https://doi.org/10.1109/atsip.2016.7523046
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref20">
    <label>20</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Alham, N.K., Li, M., Liu, Y. and Hammoud, S. (2011) A Mapreduce-Based Distributed SVM Algorithm for Automatic Image Annotation. Computers&amp;Mathematics with Applications, 62, 2801-2811. &gt;https://doi.org/10.1016/j.camwa.2011.07.046
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref21">
    <label>21</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Cao, J., Cui, H., Shi, H. and Jiao, L. (2016) Big Data: A Parallel Particle Swarm Optimization-Back-Propagation Neural Network Algorithm Based on Mapreduce. PLOS ONE, 11, e0157551. &gt;https://doi.org/10.1371/journal.pone.0157551
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref22">
    <label>22</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Nair, V. and Hinton, G.E. (2010) Rectified Linear Units Improve Restricted Boltzmann Machines. Proceedings of the 27th International Conference on International Conference on Machine Learning, Haifa, 21-24 June 2010, 807-814.
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref23">
    <label>23</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     He, K., Zhang, X., Ren, S. and Sun, J. (2015) Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification. 2015 IEEE International Conference on Computer Vision (ICCV), Santiago, 7-13 December 2015, 1026-1034. &gt;https://doi.org/10.1109/iccv.2015.123
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref24">
    <label>24</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Alex, K. (2009) Learning Multiple Layers of Features from Tiny Images. &gt;https://www.cs.toronto.edu/kriz/learning-features-2009-TR.pdf 
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref25">
    <label>25</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I. and Salakhutdinov, R. (2014) Dropout: A Simple Way to Prevent Neural Networks from Overfitting. The Journal of Machine Learning Research, 15, 1929-1958.
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref26">
    <label>26</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Szegedy, C., Liu, W., Jia, Y., Sermanet, P., Reed, S., Anguelov, D., et al. (2015) Going Deeper with Convolutions. 2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Boston, 7-12 June 2015, 1-9. &gt;https://doi.org/10.1109/cvpr.2015.7298594
    </mixed-citation>
   </ref>
   <ref id="scirp.135620-ref27">
    <label>27</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Liu, Y., Yang, J., Huang, Y., Xu, L., Li, S. and Qi, M. (2015) MapReduce Based Parallel Neural Networks in Enabling Large Scale Machine Learning. Computational Intelligence and Neuroscience, 2015, Article 297672. &gt;https://doi.org/10.1155/2015/297672
    </mixed-citation>
   </ref>
  </ref-list>
 </back>
</article>