Concurrent training of functional subnetworks of a neural network

An artificial neural network that includes first subnetworks to implement known functions and second subnetworks to implement unknown functions is trained. The first subnetworks are trained separately and in parallel on corresponding known training datasets to determine first parameter values that define the first subnetworks. The first subnetworks are executing on a plurality of processing elements in a processing system. Input values from a network training data set are provided to the artificial neural network including the trained first subnetworks. Error values are generated by comparing output values produced by the artificial neural network to labeled output values of the network training data set. The second subnetworks are trained by back propagating the error values to modify second parameter values that define the second subnetworks without modifying the first parameter values. The first and second parameter values are stored in a storage component.

BACKGROUND

Deep neural networks (DNNs) are a class of artificial neural networks (ANNs) that are able to learn how to perform tasks such as image recognition, natural language processing, and game play. A DNN architecture includes a stack of layers that implement functions to transform an input volume (such as a digital image) into an output volume (such as labeled features detected in the digital image). For example, the layers in a DNN can be separated into convolutional layers that represent convolutional neural networks (CNNs), pooling layers, and fully connected layers. Multiple sets of convolutional, pooling, and fully connected layers can be interleaved to form a complete DNN. For example, the DNN can include a set of convolutional layers that receive input and provide output to a set of pooling layers, which provide output to another set of convolutional layers. The second set of convolutional layers provide output to another set of pooling layers, which provide output to one or more sets of fully connected layers that generate the output volume. The functions implemented by the layers in a DNN are explicit (i.e., known or predetermined) or hidden (i.e., unknown). A CNN is a deep neural network (DNN) that performs deep learning on tasks that contain multiple hidden layers. For example, a DNN that is used to implement computer vision includes explicit functions (such as orientation maps) and multiple hidden functions in the hierarchy of vision flow.

DETAILED DESCRIPTION

The functions of a deep neural network (DNN) are represented by different sets of parameters for the different layers. The parameters of a convolutional layer define a set of learnable filters (or kernels) that convolve incoming data across the width and height of the input volume to produce a two-dimensional (2-D) activation map of the filter. The parameters of a pooling layer define how an input volume is partitioned into sub-regions. For example, the pooling layer can be configured to partition an input image into a set of non-overlapping rectangles and generate a maximum value for each sub-region. The parameters of a fully connected layer define the high-level reasoning performed by the DNN based on connections to activations in the previous layer, such as a previous pooling layer. The parameters of the DNN are determined by training the DNN using a training data set that includes a set of input volumes and a corresponding set of (known or labeled) output values. For example, a facial recognition DNN can be trained using images that are known to include the individuals that are to be identified in other images by the facial recognition DNN. The training images are referred to as labeled data, which is defined as a group of samples that have been tagged with one or more labels. During training, the input data from the training data set is sequentially provided to the DNN and errors between the output values generated by the DNN and the known output values are accumulated. The accumulated errors are back propagated to modify parameters of the DNN. The process is repeated until a convergence criterion is satisfied. However, training a large DNN is a computationally intensive task that can require hours, days, or even months depending on the size of the network.

Training an artificial neural network is typically a sequential process. Backpropagated errors are used to modify the parameters that define the artificial neural network. Examples of the trained parameters include the connection weights for connections between nodes in the network. The accuracy of the functions implemented by the artificial neural network (e.g., pattern recognition) increases with each iteration of the sequential process as the parameters are modified based on the back propagated errors generated by each consecutive sample from the training set. Thus, it is difficult to parallelize the training process by subdividing the training data set and training multiple instances of the network in parallel because each instance of the network would only be trained based on a portion of the training set. Consequently, merging instances of a network that were trained in parallel using subsets of the training data set into a single trained network may not result in a network that performs its function with the accuracy of a network that is sequentially trained using the full training dataset.

These drawbacks in the conventional sequential training process are addressed by parallelizing the training of an artificial neural network (such as a CNN or a DNN) that includes first subnetworks that implement known functions (and which can therefore be trained using corresponding known training datasets) and second subnetworks that implement unknown functions that do not have corresponding training datasets. The first subnetworks are trained separately and in parallel on the known training datasets. The artificial neural network, including the first and second subnetworks, is then trained on a network training dataset by providing input values from the network training dataset to the artificial neural network and accumulating errors that represent a difference between the output values of the artificial neural network and labeled output values from the network training dataset. The accumulated errors are back propagated to modify parameters of the second subnetworks. Previously trained parameters of the first subnetworks are not modified during training of the artificial neural network. This process is iterated until convergence criteria for the parameters of the second subnetworks are satisfied. The first and second subnetworks are significantly smaller than the artificial neural network and, consequently, training the first and second subnetworks separately is significantly faster than training the artificial neural network.

A quality assurance step is performed to train the parameters of the artificial neural network given the parameter values determined for the trained first and second subnetworks. During the quality assurance step, input values of the training data set are provided to an instance of the artificial neural network that is defined by the modified parameters of the first and second subnetworks. Error values generated by the artificial neural network are back propagated to modify the parameters that define the first and second subnetworks in the artificial neural network and the process is iterated until a convergence criterion is satisfied. Beginning the quality assurance step using the parameter values determined for the separately trained first and second subnetworks is expected to accelerate the convergence properties of the quality assurance step (relative to the technique of training the entire artificial neural network using back propagation) because the parameter values of the trained first and second subnetworks are expected to be significantly closer to the converged values of the complete neural network than other possible initial values of the parameters, such as arbitrary or randomly chosen parameter values.

FIG.1is a block diagram of a processing system100according to some embodiments. The processing system100includes or has access to a memory105or other storage component that is implemented using a non-transitory computer readable medium such as a dynamic random access memory (DRAM). However, the memory105can also be implemented using other types of memory including static random access memory (SRAM), nonvolatile RAM, and the like. The processing system100also includes a bus110to support communication between entities implemented in the processing system100, such as the memory105. Some embodiments of the processing system100include other buses, bridges, switches, routers, and the like, which are not shown inFIG.1in the interest of clarity.

The processing system100includes a graphics processing unit (GPU)115that is configured to render images for presentation on a display120. For example, the GPU115can render objects to produce values of pixels that are provided to the display120, which uses the pixel values to display an image that represents the rendered objects. Some embodiments of the GPU115can also be used for general purpose computing. In the illustrated embodiment, the GPU115implements multiple processing elements116,117,118(collectively referred to herein as “the processing elements116-118”) that are configured to execute instructions concurrently or in parallel. In the illustrated embodiment, the GPU115communicates with the memory105over the bus110. However, some embodiments of the GPU115communicate with the memory105over a direct connection or via other buses, bridges, switches, routers, and the like. The GPU115can execute instructions stored in the memory105and the GPU115can store information in the memory105such as the results of the executed instructions. For example, the memory105can store a copy125of instructions from a program code that is to be executed by the GPU115.

The processing system100also includes a central processing unit (CPU)130that implements multiple processing elements131,132,133, which are collectively referred to herein as “the processing elements131-133.” The processing elements131-133are configured to execute instructions concurrently or in parallel. The CPU130is connected to the bus110and can therefore communicate with the GPU115and the memory105via the bus110. The CPU130can execute instructions such as program code135stored in the memory105and the CPU130can store information in the memory105such as the results of the executed instructions. The CPU130is also able to initiate graphics processing by issuing draw calls to the GPU115.

An input/output (I/O) engine140handles input or output operations associated with the display120, as well as other elements of the processing system100such as keyboards, mice, printers, external disks, and the like. The I/O engine140is coupled to the bus110so that the I/O engine140is able to communicate with the memory105, the GPU115, or the CPU130. In the illustrated embodiment, the I/O engine140is configured to read information stored on an external storage component145, which is implemented using a non-transitory computer readable medium such as a compact disk (CD), a digital video disc (DVD), and the like. The I/O engine140can also write information to the external storage component145, such as the results of processing by the GPU115or the CPU130.

Artificial neural networks, such as a CNN or DNN, are represented as program code that is configured using a corresponding set of parameters. The artificial neural network can therefore be executed on the GPU115or the CPU130, or other processing units including field programmable gate arrays (FPGA), application-specific integrated circuits (ASIC), processing in memory (PIM), and the like. If the artificial neural network implements a known function that can be trained using a corresponding known dataset, the artificial neural network is trained (i.e., the values of the parameters that define the artificial neural network are established) by providing input values of the known training data set to the artificial neural network executing on the GPU115or the CPU130and then comparing the output values of the artificial neural network to labeled output values in the known training data set. Error values are determined based on the comparison and back propagated to modify the values of the parameters that define the artificial neural network. This process is iterated until the values of the parameters satisfy a convergence criterion.

However, as discussed herein, artificial neural networks are often composed of subnetworks that perform known (or explicit) functions and subnetworks that perform unknown (or implicit) functions. Sequentially training the artificial neural network that includes subnetworks to implement known and unknown functions on a network training data set is a time and resource intensive process. To reduce the time and resources consumed by training an artificial network, the artificial neural network is subdivided into first subnetworks that perform known functions (which have corresponding known training datasets) and second subnetworks that perform unknown functions and therefore do not have known training datasets. The first subnetworks are trained separately and in parallel on the basis of the corresponding known training datasets. For example, separate instances of first subnetworks are executed concurrently on the processing elements116-118in the GPU115or the processing elements131-133in the CPU130or a combination drawn from all of the processing elements116-118,131-133. In some embodiments, multiple instances of a single first subnetwork can be trained concurrently on the processing elements and then the best-trained instance is selected for integration into the artificial neural network. Separate instances of the first subnetworks can also be trained for different variations of the known function.

Once the first subnetworks have been trained, the artificial neural network is trained on a network training data set. The parameters of the first subnetworks are held constant at this stage of the training because the parameters are expected to be accurately defined by training the first subnetworks on the basis of the known datasets. Input values from the network training datasets are provided to the artificial neural network, which is executing on one, some or all of the processing elements116-118,131-133. Error values are generated by comparing the output values of the artificial neural network to labeled output values from the network training data set. The error values are back propagated and used to modify the parameters of the second subnetworks. This process is iterated until the values of the parameters that define the second subnetworks satisfy convergence criteria. For example, the values of the parameters that define second subnetworks converge when a measure of the changes in the values of the parameters between two iterations falls below a threshold. The converged values of the parameters that define the artificial neural network (e.g., the parameters that define the first and second subnetworks) are then stored in a non-transitory computer readable media such as the memory105or the external storage component145. In some embodiments, the stored values of the parameters for first and second subnetworks are subsequently read from the non-transitory computer readable media and used to construct other neural networks, potentially in combination with other subnetworks that may or may not be trained.

Once the values of the parameters that define the first and second subnetworks have been determined, a quality assurance step is performed on the complete artificial neural network. An instance of the artificial neural network is executed in the GPU115or the CPU130. The instance is defined by integrating the first and second subnetworks into the complete artificial neural network. Input values are provided to the instance of the artificial neural network, which generates corresponding output values based on the current values of the parameters that define the artificial neural network. Error values are determined by comparing the output values to labeled output values of the training data set. The error values are back propagated and used to modify the values of the parameters that define the first and second subnetworks in the artificial neural network. This process is iterated until the values of the parameters that define the artificial neural network satisfy a convergence criterion. The artificial neural network is then considered to be trained to perform its assigned task. In some embodiments, concurrent training of the first subnetworks, training of the unknown functions in the second subnetworks, and the subsequent quality assurance training of the artificial neural network is iterated one or more times to train the artificial neural network.

FIG.2is a block diagram that illustrates a deep neural network (DNN)200that is trained to perform a task such as image recognition according to some embodiments. The DNN200is executed on the processing elements116-118in the GPU115or the processing elements131-133in the CPU130shown inFIG.1. The DNN200is configured to receive input values such as a portion205of an image210and produce output values215on the basis of functions implemented in the DNN200and values of parameters that define the functions.

The DNN200includes convolutional layers220that implement a convolutional function that is defined by a set of parameters, which are trained on the basis of one or more training datasets. The parameters include a set of learnable filters (or kernels) that have a small receptive field and extend through a full depth of an input volume of convolutional layers220. The parameters can also include a depth parameter, a stride parameter, and a zero-padding parameter that control the size of the output volume of the convolutional layers220. The convolutional layers220apply a convolution operation to input values and provide the results of the convolution operation to a subsequent layer in the DNN200. For example, the portion205of the image210is provided as input225to the convolutional layers220, which apply the convolution operation to the input225on the basis of the set of parameters to generate a corresponding output value230. In some embodiments, the convolutional layers220are identified as a subnetwork of the DNN200. The subnetwork then represents a convolutional neural network (CNN). However, the convolutional layers220can be a part of a larger subnetwork of the DNN200or the convolutional layers220can be further subdivided into multiple subnetworks of the DNN200.

Results generated by the convolutional layers220are provided to pooling layers235in the DNN200. The pooling layers235combine outputs of neuron clusters at the convolutional layers220into a smaller number of neuron clusters that are output from the pooling layers235. The pooling layers235typically implement known (or explicit) functions. For example, pooling layers235that implement maximum pooling can assign a maximum value of values of neurons in a cluster that is output from the convolutional layers220to a single neuron that is output from the pooling layers235. For another example, pooling layers235that implement average pooling can assign an average value of the values of the neurons in the cluster that is output from the convolutional layers220to a single neuron that is output from the pooling layers235. The known (or explicit) functionality of the pooling layers235can therefore be trained using predetermined training datasets. In some embodiments, the pooling layers235are identified as a subnetwork of the DNN200. However, the pooling layers235can be a part of a larger subnetwork of the DNN200or the pooling layers235can be further subdivided into multiple subnetworks of the DNN200.

In the illustrated embodiment, the DNN200also includes additional convolutional layers240that receive input from the pooling layers235and additional pooling layers245that receive input from the additional convolutional layers240. However, the additional convolutional layers240and the additional pooling layers245are optional and are not present in some embodiments of the DNN200. Furthermore, some embodiments of the DNN200can include larger numbers of convolutional and pooling layers. The additional convolutional layers240and the additional pooling layers245can be identified as subnetworks of the DNN200, portions of subnetworks of the DNN200, or they can be subdivided into multiple subnetworks of the DNN200.

Output from the additional pooling layers245are provided to fully connected layers250,255. The neurons in the fully connected layers250,255are connected to every neuron in another layer, such as the additional pooling layers245or the other fully connected layers. The fully connected layers250,255typically implement functionality that represents the high-level reasoning that produces the output values215. For example, if the DNN200is trained to perform image recognition, the fully connected layers250,255implement the functionality that labels portions of the image that have been “recognized” by the DNN200. Examples of labels include names of people whose faces are detected in the image210, types of objects detected in the image, and the like. The functions implemented in the fully connected layers250,255are represented by values of parameters that are determined using a training dataset, as discussed herein. The fully connected layers250,255are identified as subnetworks of the DNN200, portions of subnetworks of the DNN200, or they are subdivided into multiple subnetworks of the DNN200.

FIG.3is a block diagram illustrating training of subnetworks that implement unknown functions within an instance300of an artificial neural network that also includes subnetworks that implement known functions according to some embodiments. The instance300is executed on processing elements such as the processing elements116-118,131-133shown inFIG.1. The DNN is implemented using interconnected subnetworks310,311,312,313,314,315, which are collectively referred to herein as “the subnetworks310-315.” The subnetworks310-315implement different functions that are defined by values of parameters that characterize the subnetworks310-315. In the illustrated embodiment, the subnetwork310implements an unknown function and consequently does not have a known training dataset. Although a single subnetwork310implementing an unknown function is shown inFIG.3, some embodiments of the artificial neural network include multiple subnetworks that implement one or more unknown functions. The subnetworks311-315implement known functions that have corresponding known training datasets. The subnetworks311-315have therefore been trained separately and in parallel on the basis of the corresponding known training datasets.

The instance300of the DNN is trained using a network training dataset that includes the input values320and325and the labeled output values330. The instance300of the DNN can receive the input values320,325and generate output values335. Error values are then determined for the instance300of the DNN by comparing the output values335to the labeled output values330. The subnetwork310is identified as a training subnetwork, as indicated by the solid lines, which means that the parameters that define the subnetworks310are modified based on back propagated error values. The subnetworks311-315are identified as non-training subnetworks, as indicated by the dashed lines, which means that the parameters that define the subnetworks311-315are not modified based on the back propagated error values because these parameters were previously trained on the basis of known training datasets associated with the functions of the subnetworks311-315.

The training subnetwork310is then trained by assuming that the error values produced by the instance300of the DNN are produced by inaccurate values of the parameters that define the training subnetwork310. The values of the parameters are therefore modified based on the error values produced during a current iteration to reduce the error values produced during a subsequent iteration. The values of the parameters that define the other (non-training) subnetworks311-315are held constant during the training process. For example, the values of the parameters that define the subnetwork310in the instance300of the DNN are iteratively modified to reduce the error values produced by the instance300of the DNN, while holding the values of the parameters that define the subnetworks311-315constant.

FIG.4is a block diagram illustrating an instance400of the DNN shown inFIG.3that is executed to perform a quality assurance step according to some embodiments. The instance400can be executed on a processing element such as one of the processing elements116-118,131-133shown inFIG.1. During the quality assurance step, all of the subnetworks310-315are treated as training subnetworks, as indicated by the solid lines. The complete DNN is trained on the network training dataset320,325,330using the values of the parameters that define the previously trained subnetworks310-315(this is e.g., as illustrated inFIG.3) as initial values for the iterative training process. The instance400of the DNN receives the input values320,325and produces output values405based on the current values of the parameters that define the DNN, e.g., the parameters that define the subnetworks310-315. The output values405are compared to the labeled output values330to determine error values, which are back propagated and used to modify the parameter values that define the DNN. This process is iterated until a convergence criterion is satisfied, such as a measure of a rate of change of the error values or a magnitude of the error values falling below a threshold.

Training the subnetworks311-315that implement known functions separately and in parallel allows the subnetwork training to be performed concurrently or in parallel on different processing elements, thereby reducing the time required to train the subnetworks311-315. The values of the parameters that define the trained subnetworks311-315are likely to be much closer to the values of the parameters that are determined by training the complete DNN using the input values320,325,330of the training data set, e.g., using the instance400shown inFIG.4. Convergence of the training process for the complete DNN (including training the subnetworks310-315and performing the quality assurance step) is therefore expected to consume less time, energy and fewer resources than the conventional practice of training the complete CNN on the input values320,325,330of the training data set using arbitrary or random initial values of the parameters.

FIG.5is a block diagram illustrating training of subnetworks that implement unknown functions within a cutout portion500of an artificial neural network that also includes subnetworks that implement known functions according to some embodiments. The cutout portion500is executed on processing elements such as the processing elements116-118,131-133shown inFIG.1. The cutout portion500of the artificial neural network is implemented using interconnected subnetworks510,511,512,513,514,515,516, which are collectively referred to herein as “the subnetworks510-516.” The subnetworks510-516implement different functions that are defined by values of parameters that characterize the subnetworks510-516. In the illustrated embodiment, the subnetwork510implements an unknown function and consequently does not have a known training dataset. Although a single subnetwork510implementing an unknown function is shown inFIG.5, some embodiments of the artificial neural network include multiple subnetworks that implement one or more unknown functions. The subnetworks511-516implement known functions that have corresponding known training datasets. The subnetworks511-516have therefore been trained separately and in parallel on the basis of the corresponding known training datasets.

The subnetwork510is substantially encompassed by the subnetworks511-516. As used herein, the phrase “substantially encompassed” indicates that the inputs to the subnetwork510are provided exclusively (or primarily) by one or more of the subnetworks511-516and none (or a small number of) outputs from the subnetwork510are exposed to any subnetworks except for the subnetworks511-516. In that case, the subnetwork510is trained on the basis of a combined training dataset that is composed of the known training datasets for the subnetworks511-516. For example, the subnetworks511-516can be trained separately and in parallel on the basis of their corresponding known training datasets, as discussed herein. The subnetwork510is then trained by training the cutout portion500on the basis of the combined training dataset, while keeping the parameters of the previously trained subnetworks511-516constant. Once trained, the cutout portion500is integrated into the complete artificial neural network, which is trained on the basis of the network training dataset as discussed herein.

FIG.6is a flow diagram of a method600for training an artificial neural network (such as a CNN or a DNN) that includes first subnetworks according to some embodiments. The method600is implemented in some embodiments of the processing system100shown inFIG.1.

At block605, the artificial neural network is partitioned into subnetworks that perform known functions and subnetworks that perform unknown functions in the artificial neural network. The definition of function is not strict. A DNN architect can define functions based on network topology or internal primitive operation performed by a subnetwork or any other reasonable criteria. For example, an artificial neural network such as the deep neural network200shown inFIG.2that includes convolutional layers220, pooling layers235, convolutional layers240, pooling layers245, and fully connected layers250,255is partitioned into a first subnetwork that includes the convolutional layers220, a second subnetwork that includes the pooling layers235, a third subnetwork that includes the convolutional layers240, a fourth subnetwork that includes the pooling layers245, a fifth subnetwork that includes the fully connected layers250, and a sixth subnetwork that includes the fully connected layers255. Other partitions of the neural network at higher or lower layers of granularity are also possible. For example, partitioning of the layers can occur within an individual layer such as within the convolutional layers220.

The first subnetworks that have known functions are trained separately and in parallel on different processing elements, such as the processing elements116-118,131-133shown inFIG.1. The first subnetworks are trained on known datasets corresponding to the functions implemented in the first subnetworks. In the illustrated embodiment, the values of the parameters that define a training subnetwork are modified based on a training dataset specific to each subnetwork. This training data set is known since the function of a subnetwork (the values of outputs produced in response to the inputs) is also known. For example, at block610, the values of the parameters that define the first known subnetwork are modified based on error values determined by comparing output values of this subnetwork to labeled output values of a training dataset for this subnetwork. At block615, the values of the parameters that define the second known subnetwork are modified based on error values determined by comparing output values of the second subnetwork to labeled output values of the training dataset for the second known subnetwork. At block620, the values of the parameters that define the N-th known subnetwork are modified based on error values determined by comparing output values of the N-th subnetwork to the labeled output values of the known training dataset of N-th subnetwork. The processes represented by blocks610,615,620are performed concurrently or in parallel.

At block625, the parameters of the second subnetworks that implement unknown functions are modified based on a network training dataset for the artificial neural network. The values of the parameters that define first subnetworks in the artificial neural network are set equal to the values of the parameters determined in blocks610,615,620so that the first subnetworks are integrated back into the overall artificial neural network. The values of the parameters that define the second subnetworks are set to random or arbitrary values or using any other criteria for setting initial values. Input values from the network training dataset are provided to the artificial neural network, which generates output values based on the current values of the parameters. The output values are compared to the labeled output values of the network training dataset to determine error values, which are back propagated to modify the values of the parameters that define the second subnetworks. The parameters that define the first subnetworks are held constant during this process, which is iterated until a convergence criterion for the second subnetworks is satisfied.

At block630, a quality assurance step is performed. In the quality assurance step, input values from the network training dataset are provided to the artificial neural network, which generates output values based on the current values of the parameters. The output values are compared to the labeled output values of the network training dataset to determine error values. The quality assurance step performed at block630differs from the step performed at block625because the error values are back propagated to modify the values of the parameters that define both the first and second subnetworks. The quality assurance step is iterated until convergence criteria for the artificial neural network is satisfied. Once the process has converged, the values of the parameters that define the first and second subnetworks are stored in a storage component that is implemented using a non-transitory computer readable medium such as the memory105or the external storage component145shown inFIG.1.

FIG.7is a flow diagram of a method700for training subnetworks that implement unknown functions within an artificial neural network (such as a CNN or a DNN) that includes subnetworks that implement known and unknown functions according to some embodiments. The method700is implemented in some embodiments of the processing system100shown inFIG.1. The method700is used to implement some embodiments of the method600shown inFIG.6.

At block705, the artificial neural network generates output values based on input training values from a training dataset and current values of the parameters of the subnetworks that make up a neural network. As discussed herein, the subnetworks that implement unknown functions in the artificial neural network are identified as training subnetworks.

At block710, output values of the artificial neural network are compared to labeled output values for the training dataset. Error values are determined based on the comparison. For example, the error values can indicate a percentage of people or objects in one or more training images that are correctly identified by the artificial neural network as indicated by the comparison of the output values to the labeled output values.

At block715, values of the parameters that define the training subnetworks (i.e., the subnetworks that implemented unknown functions) are modified based on the error values. The values of the parameters that define the other subnetworks that implement known functions in the artificial neural network are held constant, i.e., the values of the parameters that define the training subnetwork are modified under the assumption that the error is caused by incorrect values of the parameters that define the training subnetwork only.

At decision block720, a convergence criterion is evaluated for the values of the parameters that define the training subnetwork. For example, the values of the parameters determined in a current iteration of the method700can be compared to the values of the parameters determined in a previous iteration of the method700. The values of the parameters satisfy the convergence criterion is a measure of the change in the values between the current and the previous iteration falls below a threshold. Other convergence criteria can be applied in other embodiments such as comparing the output of the network to the labeled data. In this case the test for convergence (block720) can be placed between block710and715. If the convergence criterion is not satisfied, the method700flows back to block705to begin another iteration of the method700using the modified values of the parameters. Modification is done by back propagation or any other method used in training neural networks. If the convergence criterion is satisfied, the method700flows to block725.

At block725, the converged values of the parameters that define the training subnetworks are stored in a storage component that is implemented using a non-transitory computer readable medium. For example, the converged values are stored in the memory105or the external storage component145shown inFIG.1. The stored values can then be accessed for subsequent quality assurance step that is performed for the neural network. The stored values can also be accessed and combined with other parameter values for other subnetworks to form new neural networks, as discussed herein.

FIG.8is a flow diagram of a method800for generating and training a neural network based on previously trained subnetworks according to some embodiments. In the illustrated embodiment, a first neural network has been subdivided into a plurality of subnetworks and then trained using a network training dataset. For example, the first neural network can be trained according to embodiments of the method600shown inFIG.6and the method700shown inFIG.7. The values of the parameters that define the subnetworks in the first neural network are stored in a non-transitory computer readable medium such as the external storage component145shown inFIG.1. Training of the first neural network is performed by the processing system100shown inFIG.1or by another processing system.

At block805, values of the parameters that define a subset of the subnetworks of the first neural network are read from the non-transitory computer readable storage medium. In some embodiments, values of parameters that define subnetworks of other neural networks are also read from the non-transitory computer readable storage medium.

At block810, the subnetworks are combined to form a second neural network. As discussed herein, combining the subnetworks to form the second neural network includes configuring program code and parameter values to represent the second neural network, e.g. connecting outputs of a set of subnetworks to inputs of another set of subnetworks. Various criteria can be selected for integrating subnetworks from the plurality of networks into a new network, e.g., functional integration, information data streams, real-time aspects and many others. The second neural network can therefore be executed on one or more processing elements. For example, the values of the parameters that define the subset of the subnetworks of the first neural network and, if available, the values of the parameters that define the subnetworks of other neural networks are interconnected to construct the second neural network so that the second neural network can be executed on one or more processing elements such as the processing elements116-118,131-133shown inFIG.1.

At block815, the second neural network is trained on the basis of a network training dataset. The values of the parameters that define the second neural network are initially set equal to the corresponding values of the parameters that define the subnetworks that make up the second neural network. The second neural network can then be trained using some embodiments of the method600shown inFIG.6and the method700shown inFIG.7. Beginning the training process using previously trained values of the parameters that define the subnetworks can accelerate the training process so that training consumes less time and fewer resources relative to beginning the training process of the second neural network using arbitrary or random values of the parameters that define the second neural network.

In some embodiments, the apparatus and techniques described above are implemented in a system including one or more integrated circuit (IC) devices (also referred to as integrated circuit packages or microchips), such as the processing system described above with reference toFIGS.1-7. Electronic design automation (EDA) and computer aided design (CAD) software tools may be used in the design and fabrication of these IC devices. These IC devices can implement methods described herein directly in the transistor circuitry or as programmable code executing on this circuitry.