This application claims the benefit under 35 USC § 119(a) of Korean Patent Application No. 10-2022-0020308, filed on Feb. 16, 2022, at the Korean Intellectual Property Office, the entire disclosure of which is incorporated herein by reference for all purposes.
The following description relates to a method and apparatus with pruning.
An artificial neural network apparatus often requires a large amount of processing power to be able to handle complex input data (hereafter, “neural network” refers to artificial neural networks). Increasing the learning capacity of a neural network may involve increasing the complexity of the connectivity within the neural network. While the accuracy of old learning data may increase, confidence in estimated value of newly learned data may decrease. That is, an overfitting issue may occur. Also, increasing the complexity of a neural network may excessively increase its memory allocation, which creates issues in terms of miniaturization and commercialization.
Accordingly, there is a need to generally maintain performance of a neural network while reducing the cost of implementing the neural network.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
In one general aspect, a method is performed by an apparatus including a processor, the method includes determining weight importance of a trained neural network, receiving a constraint condition related to an operation resource, and determining, in accordance with the constraint condition, a pruning mask for maximizing the weight importance of the trained neural network.
The determining of the pruning mask may include determining a pruning binary vector of an input channel with respect to pruning, and determining a spatial pruning binary vector of an output channel with respect to the pruning.
The pruning of the neural network may include pruning weights of an input channel, with respect to the pruning, based on a determined pruning binary vector of the input channel, and pruning weights in a spatial dimension of an output channel based on a determined spatial pruning binary vector of the output channel.
The determining of the weight importance may include expressing the weight importance as at least one of a pruning binary vector of an input channel, with respect to the pruning, or a spatial pruning binary vector of an output channel, with respect to the pruning, and the receiving of the constraint condition may include expressing the constraint condition as at least one of the pruning binary vector of the input channel or the spatial pruning binary vector of the output channel.
The determining of the pruning mask may include, in accordance with the constraint condition, expressing an optimization equation for maximizing the weight importance of the neural network as at least one of the pruning binary vector of the input channel and the spatial pruning binary vector of the output channel.
The determining of the pruning mask may include determining the pruning mask corresponding to the optimization equation based on a binary vector optimization algorithm.
The determining of the weight importance may include determining the weight importance based an absolute value of a weight of the neural network and/or an absolute value of a gradient of an error.
In one general aspect, an electronic apparatus includes a processor, and a memory storing instructions executable by the processor, wherein the processor is configured to, in response to executing the instructions, determine weight importance of a trained neural network, receive a constraint condition related to an operation resource, and determine, in accordance with the constraint condition, a pruning mask for maximizing the weight importance of the trained neural network.
The processor may be further may be configured to determine a pruning binary vector of an input channel, and determine a spatial pruning binary vector of an output channel.
The processor may be further may be configured to prune the neural network based on the pruning mask.
The processor may be configured to perform inference based on the pruned neural network.
The processor may be further may be configured to control the electronic apparatus to prune weights of an input channel based on a determined pruning binary vector of the input channel, and prune weights in a spatial dimension of an output channel based on a determined spatial pruning binary vector of the output channel.
The processor may be configured to express the weight importance as at least one of a pruning binary vector of an input channel or a spatial pruning binary vector of an output channel, and express the constraint condition as at least one of the pruning binary vector of the input channel or the spatial pruning binary vector of the output channel.
The processor may be further configured to, in accordance with the constraint condition, to express an optimization equation for maximizing the weight importance of the neural network as at least one of the pruning binary vector of the input channel or the spatial pruning binary vector of the output channel.
The processor may be further may be configured to determine the pruning mask corresponding to the optimization equation based on a binary vector optimization algorithm.
The processor may be further may be configured to determine the weight importance based on an absolute value of a weight of the neural network and/or an absolute value a gradient of an error.
The weight importance may include a value corresponding to one or more weights in the trained neural network, and wherein the value may correspond to the one or more weight's effect on accuracy of the trained neural network.
In one general aspect, a method is performed by a processor, and the method includes receiving a constraint condition, the constraint condition indicating a constraint to be complied with when a corresponding trained neural network performs an inference, based on the constraint condition and the trained neural network, determining a pruning mask that satisfies the constraint condition for the trained neural network based on a weight feature of the neural network, and using the pruning mask to prune a weight of an output channel of the trained neural network.
The pruning mask may be determined based on an input pruning vector corresponding an input channel, with respect to the pruning, of a layer of the neural network and an output pruning vector corresponding to an output channel of the layer of the neural network.
The weight feature may be based on one or more weights of the trained neural network.
The weight feature may correspond to an effect of the weights on prediction accuracy of the trained neural network.
The neural network may include a convolutional neural network, wherein the layer may include a convolution layer of the convolutional neural network.
Determining the pruning mask may include executing an optimization algorithm constrained by the constraint condition and the weight condition.
A non-transitory computer-readable storage medium may store instructions that, when executed by a processor, cause the processor to perform any of the method.
Other features and aspects will be apparent from the following detailed description, the drawings, and the claims.
Throughout the drawings and the detailed description, unless otherwise described or provided, the same drawing reference numerals will be understood to refer to the same elements, features, and structures. The drawings may not be to scale, and the relative size, proportions, and depiction of elements in the drawings may be exaggerated for clarity, illustration, and convenience.
The following detailed description is provided to assist the reader in gaining a comprehensive understanding of the methods, apparatuses, and/or systems described herein. However, various changes, modifications, and equivalents of the methods, apparatuses, and/or systems described herein will be apparent after an understanding of the disclosure of this application. For example, the sequences of operations described herein are merely examples, and are not limited to those set forth herein, but may be changed as will be apparent after an understanding of the disclosure of this application, with the exception of operations necessarily occurring in a certain order. Also, descriptions of features that are known after an understanding of the disclosure of this application may be omitted for increased clarity and conciseness.
The features described herein may be embodied in different forms and are not to be construed as being limited to the examples described herein. Rather, the examples described herein have been provided merely to illustrate some of the many possible ways of implementing the methods, apparatuses, and/or systems described herein that will be apparent after an understanding of the disclosure of this application.
The terminology used herein is for describing various examples only and is not to be used to limit the disclosure. The articles “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. As used herein, the term “and/or” includes any one and any combination of any two or more of the associated listed items. As non-limiting examples, terms “comprise” or “comprises,” “include” or “includes,” and “have” or “has” specify the presence of stated features, numbers, operations, members, elements, and/or combinations thereof, but do not preclude the presence or addition of one or more other features, numbers, operations, members, elements, and/or combinations thereof.
Throughout the specification, when a component or element is described as being “connected to,” “coupled to,” or “joined to” another component or element, it may be directly “connected to,” “coupled to,” or “joined to” the other component or element, or there may reasonably be one or more other components or elements intervening therebetween. When a component or element is described as being “directly connected to,” “directly coupled to,” or “directly joined to” another component or element, there can be no other elements intervening therebetween. Likewise, expressions, for example, “between” and “immediately between” and “adjacent to” and “immediately adjacent to” may also be construed as described in the foregoing.
Although terms such as “first,” “second,” and “third”, or A, B, (a), (b), and the like may be used herein to describe various members, components, regions, layers, or sections, these members, components, regions, layers, or sections are not to be limited by these terms. Each of these terminologies is not used to define an essence, order, or sequence of corresponding members, components, regions, layers, or sections, for example, but used merely to distinguish the corresponding members, components, regions, layers, or sections from other members, components, regions, layers, or sections. Thus, a first member, component, region, layer, or section referred to in the examples described herein may also be referred to as a second member, component, region, layer, or section without departing from the teachings of the examples.
Unless otherwise defined, all terms, including technical and scientific terms, used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure pertains and based on an understanding of the disclosure of the present application. Terms, such as those defined in commonly used dictionaries, are to be interpreted as having a meaning that is consistent with their meaning in the context of the relevant art and the disclosure of the present application and are not to be interpreted in an idealized or overly formal sense unless expressly so defined herein. The use of the term “may” herein with respect to an example or embodiment, e.g., as to what an example or embodiment may include or implement, means that at least one example or embodiment exists where such a feature is included or implemented, while all examples are not limited thereto.
The examples may be implemented as various types of products, such as, for example, a personal computer (PC), a laptop computer, a tablet computer, a smartphone, a television (TV), a smart home appliance, an intelligent vehicle, a kiosk, a wearable device, etc. Hereinafter, examples will be described in detail with reference to the accompanying drawings. In the drawings, like reference numerals are generally used for like elements.
A neural network is a computational system that models an information processing method of a human brain. A deep neural network (DNN) may include many layers, for example, an input layer that receives input data, an output layer that outputs a result derived through input data-based prediction based on learning, and one or more hidden layers between the input layer and the output layer. Convolutional neural networks (CNNs), recurrent neural networks (RNNs), and the like, are examples of DNNs used to process information.
A method of training a neural network may be referred to as deep learning. Various algorithms, for example, a CNN scheme and an RNN scheme, may be used for deep learning. Training the artificial neural network may involve determining and updating or adjusting weights between layers, and may further or alternatively include determining and updating respective biases applied to nodes of the neural network. For example, weights of respective connections between nodes of adjacent layers may be updated during training.
Hierarchical structures and layers, including weight and bias between a plurality of neurons may be collectively referred to as connectivity of the neural network. Training a neural network may involve constructing and learning the connectivity.
Referring to
In the case of a CNN, a CNN uses a convolution operation, which is useful, for example, to find a pattern, recognize an object, face, or scene, etc., in an image. In a CNN, a filter may perform a convolution operation while traversing pixels or data of an input image at a predetermined interval to extract features of the image and generate a feature map or an activation map using a result of the convolution operation. The filter may include, for example, or weight or non-weight parameters for finding the features of an image. An example filter may also be referred to as a kernel, described below (in some cases, a filter may be multiple kernels to be convolved over respective input channels). When a filter is applied to an input image, the interval at which the filter moves across (or traverses) the pixels or data of the input image may be referred to as a “stride”. For example, when a stride is “2”, the filter may perform the convolution operation, move 2 spaces in the pixels or data of the input image, and perform the convolution operation again, repeating until the input image has been processed. This example may be expressed as “stride parameter=2”.
A feature map may be derived from an original image (or a feature map from a preceding layer) through convolution operation, and is typically expressed in the form of a matrix or tensor. In addition, the term “activation map” may refer to a result obtained by applying an activation function to results of weightings of the filter (for example) applied to an input feature map or previous-layer feature map. In other words, the activation map may correspond to each output result of layers of the neural network that performs such activation functions. Where “activation map” is used herein, such description may apply equally to a “feature map”, unless the context suggests otherwise. Activation maps may also be referred to as a feature vectors, feature volumes or tensors generated by a layer that imposes an activation (e.g., imposes a non-linearity into the layer results).
A shape of data finally output from the CNN may change depending on, for example, a filter size, stride, a number of filters, whether to padding is applied, and/or max pooling size applied subsequent to the convolution operation, and the like. In a convolution layer, a spatial size of a feature map resulting from application of a filter is typically less than the spatial size of data inputted to the corresponding convolution layer due to the convolution involving the filter and the strides.
Padding may be predetermined values corresponding to a designated number of pixels (e.g., “2”) added around borders of a set of data, typically a matrix. For example, when padding is set to “2”, a predetermined value (e.g., “0”) may be added to the data to add a 2-pixel thick border of a matrix of input data, e.g., a feature map outputted from a previous convolution player may have a size of 32×32, for example, before the padding is applied. Accordingly, when the padding is set to “2”, an increased size of the matrix of data may be 36×36. This example may be expressed as “padding parameter=2”. As such, a spatial size of output data in a convolution layer may be adjusted through padding.
For example, if padding is not used, data may have a decrease in its spatial size while passing through a convolution layer, and accordingly, information around corners and/or image-edges of the data may be lost or diminished. Therefore, the padding may be used to prevent the information around the corners of the data from being lost or to match a spatial size of an output in the convolution layer to a spatial size of input data expected by a next convolution layer.
When the neural network 100 is implemented as a DNN architecture, the neural network 100 may include more layers capable of processing valid information, and thus the neural network 100 may process more complex data sets compared to a neural network that includes only a single layer.
Each of the layers included in the neural network 100 may include many nodes, which may be organized according to a plurality of channels. Each node may also be referred to as a processing element (PE), a unit, or other similar terms. For explanatory purposes, where each channel of a layer includes one node, as illustrated in
Channels included in each of the layers of the neural network 100 may be interconnected to process data. For example, a channel output by one layer may be received by the next layer for operations with respect to that channel in the next layer.
An input and an output of each of the channels may be referred to as an input activation and an output activation, respectively. An activation may be both an output of one channel at a given layer and a parameter corresponding to one of the input the channel correspondingly included in a subsequent layer. Meanwhile, the channels at a given layer may determine their respective output activations based on activations, weights, and a bias received from (or corresponding to) channels in a previous layer. Using the above explanatory example when each channel of two layers include a single node, a weight may be a parameter associated with a connection between a channel's node at a given layer and a channel's node at a following layer. The weight may be applied to an output activation from the channel's node at the given layer to calculate an output activation for the channel's node in the following layer, generally, in combination with output activations (and respectively associated weights) from other channel's nodes in the given layer that are connected to the channel's node in the following layer.
Convolutional layer operations of each of the channels of the values of the input and corresponding filter weights may be processed as a computational unit or processing. For example, in a neural network, when a is an activation function, wjki is a weight from a k-th node included in an i−1th layer to a j-th node included in an i-th layer, bji is a bias value of the j-th node included in the i-th layer, and aji is an activation of the j-th node of the i-th layer, the activation aji may be expressed as in Equation 1 below.
a
j
i=σ(Σk(wjki×aki-1)+bji) Equation 1
As illustrated in
As illustrated in
For example, in the pre-pruning neural network 210, a connected relationship exists between all paired node combinations included in any two adjacent layers in the neural network 210, i.e., the neural network 210 is fully connected. Particularly, since the example neural network 210 is a fully-connected neural network, weights that denote connection strengths between two nodes belonging to respective adjacent layers included in the neural network 210 may be greater than “0”. Accordingly, when there is full connectivity between neurons of all adjacent layers, the overall complexity of the neural network is maximal. In such fully or highly connected neural networks, it is common for the accuracy and reliability of a prediction result of a neural network to decrease due to overfitting. To reduce the complexity of the neural network, pruning may be performed on the neural network.
Neural network pruning may be a process that, for example, as illustrated in
For example, when a weight between a node 1 and a node 2-3 in the neural network 210 is less than or equal to a predetermined threshold value, pruning is a process of setting the weight between the node 1 and the node 2-3 in the neural network 210 to “0”, for example, to effectively remove connectivity between the node 1 and the node 2-3 as shown in the pruned neural network 220 (in some embodiments, pruning may involve removing or suppressing a connection so that corresponding previously-connected channels/nodes stop exchanging an activation input/output). That is to say, in the pruned neural network 220, connectivity between some nodes in the neural network 210 may be weakened or removed.
Each layer of a neural network may be searched, at any time, to determine nodes or connections for which pruning is appropriate. Searches for layers and/or weights may be performed such that inference with accuracy of the neural network, that is, an output of the neural network, may not be excessively affected. In some embodiments, pruning may be performed as weights are being applied for activation computations, during training, when a neural network is “offline” (e.g., as a maintenance process), and so forth.
While a pruning process is being performed among weights of layers included in the neural network, a connection between nodes which have values that are less than a predetermined weight threshold value may be determined, and a connection relationship between the nodes having such weights may be removed or weakened. As discussed next with reference to
Referring to
Before pruning, the KERNELn_k 230 may have weights of various values. During the pruning process, among weights of the KERNELn_k 230, all weights less than or equal to a weight threshold value (τ=0.5) may be pruned to “0”, and a pruned KERNELn_k 240 may be generated. The pruned KERNELn_k 240 may weaken connectivity between nodes of adjacent layers, compared to the KERNELn_k 230, and thus, an amount of computational operation between adjacent nodes may be reduced due to some of the weights having a value of “0”.
Referring to the example of
As described next, channel pruning method may involve performing pruning for each input channel based on an input channel pruning binary vector and for each output channel using an output channel pruning binary vector. The input channel pruning binary vector may be a binary vector indicating whether a weight of an input channel is pruned and may be expressed as rin∈{0,1}C
r
in=(1,0, 1, 0, 0, 1) Equation 2
As shown in
The output channel pruning binary vector may be a binary vector indicating which of the “5” output channels (i.e., a particular kernel) are to be pruned, and may be expressed as rout∈{0,1}C
r
out=(1,1,0,1,1) Equation 3
As shown in
Although channel pruning may be performed for each input channel, there may be practical limits on the sophistication of pruning and a corresponding compression of a network. As described next, according to an example, a pruning method may perform more sophisticated pruning by pruning in a spatial direction of an output channel.
Referring to
According to an example, a pruning method may involve performing pruning for each input channel based on an input channel pruning binary vector and an output channel spatial pruning binary vector. The description of the input channel pruning binary vector referring to
As illustrated in
In the example of
To elaborate, whether to prune may be determined for each output channel, according to an example as discussed above; however, pruning may be performed for each kernel map element of an output channel, which is an extended way of pruning. For example, in response to a determination to prune first, third, seventh, and ninth elements of the kernel maps in a first output channel, matrix values corresponding to those elements may be expressed as “0”. Conversely, based on a determination not to prune second, fourth, fifth, sixth, and eighth elements of the kernel maps in the first output channel, matrix values corresponding to those elements may be expressed as “1”, and in this case, the first element of the output channel spatial pruning binary vector may be expressed as in Equation 4 below (and as depicted by the leftmost 3×3 mask shown in
Equation 4
where “but 1” refers to the first output channel.
Similarly, based on a determination to prune first, sixth, eighth, and ninth elements of the kernel maps in a second output channel, matrix values corresponding to those elements may be expressed as “0”. Conversely, based on a determination not to prune second, fourth, fifth, sixth, and eighth elements of the kernel maps in the second output channel, matrix values corresponding to a those elements may be expressed as “1”, and in this case, the second element (matrix) of the output channel spatial pruning binary vector may be expressed as in Equation 5 below (as depicted by the second-from-the-left 3×3 mask shown in
Equation 5
where “out_2” refers to the second output channel.
In some embodiments, a pruning mask may be determined based on a pruning binary vector of an input channel and a spatial pruning binary vector of an output channel. The pruning mask may be a binary vector indicating whether a corresponding element is pruned and may be expressed as in Equation 6 below.
A=r
in
⊗q
out Equation 6
According to Equation 6, when either a pruning binary vector of an input channel or a spatial pruning binary vector of an output channel of a predetermined element is “0”, the corresponding element may be pruned. Conversely, when both the pruning binary vector of the input channel and the spatial pruning binary vector of the output channel are “1”, the corresponding element may not be pruned. Pruning according to an embodiment may involve pruning up to a minimum unit in which an operation can be performed quickly on hardware, such as at a single multiplication operation, or entire groups of multiplication and accumulation operations, for example.
Operations of
An apparatus configured to implement embodiments described with reference to
Referring to
Thereafter, the apparatus may determine the weight importance of a trained neural network. For example, the apparatus may determine an absolute value of the weight and/or an absolute value of a gradient of an error as the weight importance (or, weight importance may be based on one or more such values). That is to say, a weight importance of a given weight may be any measure of a feature of a trained neural network that indicates the weight's importance with respect to various properties of the network such as prediction accuracy (locally and/or globally), connectivity, or the like. Alternatively, the apparatus may receive a predetermined weight importance of the neural network. An example method of determining weight importance is described below.
In operation 420, the apparatus may receive a constraint condition related to an operation resource. The constraint condition related to the operation resource may be determined based on an amount of memory, FLOPs, and/or time to operate the neural network to perform an inference (i.e., an inference time). For example, if the neural network needs to complete an inference or prediction within a preset time, a corresponding inference time may be a constraint condition. For example, the constraint condition may be a time limit of using a hardware resource such as a processor, supercomputer, or the like.
In operation 420, the apparatus may determine, according to the constraint condition, a pruning mask (or a pruning vector or matrix) for maximizing or improving the weight importance of the neural network. The description of the pruning mask referring to
In some embodiments, based on remaining weights after pruning, inference time, for example, may be predicted, as well as the amount of memory required to use the neural network, FLOPs required for calculation, etc. The apparatus may express any such prediction values of the constraint condition as a linear combination of ∥rin∥1, which is a size or norm of a pruning binary vector of an input channel, and ∥A∥1, which is a size or norm of the pruning mask. Assuming neural network operations (e.g., convolution operations) are sequentially connected, a weight of each of the neural network operations (e.g., a convolution) may be expressed as W(l)∈RC
Weight importance (I(l)) and a pruning mask (A(l)) both corresponding to a weight (W(l)) (for, e.g., convolution l) may be defined as I(l)∈RC
Σl=0Lal∥r(l)∥1+Σl=1Lbl∥A(l)∥1 Equation 7
In Equation 7, if a feature representation of an l-th operation/convolution of a neural network is X(l)∈RC
The apparatus may express, within the constraint condition, an optimization equation for maximizing the weight importance of the neural network as in Equation 8.
maxr
Equation 8 may need to satisfy a condition of Equation 9 below.
Σl=0Lal∥r(l)∥1+Σl=1Lbl∥A(l)∥1≤M, A(l)=r(l-1)⊗q(l) Equation 9
The apparatus may determine a pruning mask satisfying Equations 8 and 9 using a binary optimization algorithm, for example. For example, the apparatus may determine the pruning mask satisfying Equations 8 and 9 based on an optimizer (e.g., Gurobi and cplex) or a greedy algorithm.
The apparatus may determine a pruning mask satisfying all conditions requested by a user (or otherwise selected) at once by maintaining a maximal number of remaining important weights without repeatedly adjusting a threshold value.
Furthermore, the apparatus may enable pruning in a form convenient for efficiently optimizing speed in an existing framework (possibly instead of a form applicable to sizes of various groups) and may perform the pruning as many times as possible, practical, or necessary, e.g., after each training (or epoch) performed previous to a subsequent pruning.
The apparatus may prune the neural network based on the determined pruning mask. The apparatus may perform an inference on a pruned neural network, may transmit the pruned neural network (which may be reduced in size) via a network, etc. The inference may also be performed by an electronic device, such as when the apparatus is such an electronic apparatus.
Referring to
Referring to
The apparatus 600 may be implemented as a computing device that performs pruning on a neural network. For example, the apparatus 600 may be, or may be implemented by, a PC, a service device, or a mobile device, and furthermore, an apparatus included in, for example, an autonomous vehicle, a robot, a smartphone, a tablet device, an augmented reality (AR) device, or an Internet of Things (IoT) device, which performs voice and image recognition (or similar pattern recognition) based on a neural network, but examples are not limited thereto.
The processor 610 is a hardware configuration that may perform overall control functions for controlling operations of the apparatus 600. For example, the processor 610 may generally control the apparatus 600 by executing programs (in the form of processor executable instructions, intermediate code, bytecode, interpretable/compilable source code, etc.) stored in the memory 620 in the apparatus 600. The processor 610 may be implemented as a central processing unit (CPU), a graphics processing unit (GPU), an application processor (AP), a neural processing unit (NPU), and the like, that are included in the apparatus 600, but examples are not limited thereto.
The memory 620 is hardware that may be used for storing various sets of neural network data processed in the processor 610. For example, the memory 620 may store pruning data for a neural network, data sets (e.g., training data, validation data, data for which predictions are to be performed, etc.) to be input to the neural network, and the like. In addition, the memory 620 may store various applications to be driven by the processor 610, for example, an application for neural network pruning, a neural network driving application, a driver, and the like.
The memory 620 may include at least one of a volatile memory or a nonvolatile memory and does not include signals per se. A nonvolatile memory may include a Read Only Memory (ROM), a Programmable ROM (PROM), an Electrically Programmable ROM (EPROM), an Electrically Erasable and Programmable ROM (EEPROM), a flash memory, a Phase-change random-access memory (PRAM), a Magnetic RAM (MRAM), a Resistive RAM (RRAM), a Ferroelectric RAM (FeRAM), and the like. Volatile memory may include a Dynamic RAM (DRAM), a Static RAM (SRAM), a Synchronous DRAM (SDRAM), a PRAM, an MRAM, an RRAM, an FeRAM, and the like. Furthermore, the memory 620 may include any one or any combination of a Hard Disk Drive (HDD), a Solid State Drive (SSD), a compact flash (CF), secure digital (SD), micro-SD, Mini-SD, extreme digital (xD), and a memory stick.
The computing apparatuses, the electronic devices, the processors, the memories, the image sensors, the displays, the information output system and hardware, the storage devices, and other apparatuses, devices, units, modules, and components described herein with respect to
The methods illustrated in
Instructions or software to control computing hardware, for example, one or more processors or computers, to implement the hardware components and perform the methods as described above may be written as computer programs, code segments, instructions or any combination thereof, for individually or collectively instructing or configuring the one or more processors or computers to operate as a machine or special-purpose computer to perform the operations that are performed by the hardware components and the methods as described above. In one example, the instructions or software include machine code that is directly executed by the one or more processors or computers, such as machine code produced by a compiler. In another example, the instructions or software includes higher-level code that is executed by the one or more processors or computer using an interpreter. The instructions or software may be written using any programming language based on the block diagrams and the flow charts illustrated in the drawings and the corresponding descriptions herein, which disclose algorithms for performing the operations that are performed by the hardware components and the methods as described above.
The instructions or software to control computing hardware, for example, one or more processors or computers, to implement the hardware components and perform the methods as described above, and any associated data, data files, and data structures, may be recorded, stored, or fixed in or on one or more non-transitory computer-readable storage media. Examples of a non-transitory computer-readable storage medium include read-only memory (ROM), random-access programmable read only memory (PROM), electrically erasable programmable read-only memory (EEPROM), random-access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), flash memory, non-volatile memory, CD-ROMs, CD-Rs, CD+Rs, CD-RWs, CD+RWs, DVD-ROMs, DVD-Rs, DVD+Rs, DVD-RWs, DVD+RWs, DVD-RAMs, BD-ROMs, BD-Rs, BD-R LTHs, BD-REs, blue-ray or optical disk storage, hard disk drive (HDD), solid state drive (SSD), flash memory, a card type memory such as multimedia card micro or a card (for example, secure digital (SD) or extreme digital (XD)), magnetic tapes, floppy disks, magneto-optical data storage devices, optical data storage devices, hard disks, solid-state disks, and any other device that is configured to store the instructions or software and any associated data, data files, and data structures in a non-transitory manner and provide the instructions or software and any associated data, data files, and data structures to one or more processors or computers so that the one or more processors or computers can execute the instructions. In one example, the instructions or software and any associated data, data files, and data structures are distributed over network-coupled computer systems so that the instructions and software and any associated data, data files, and data structures are stored, accessed, and executed in a distributed fashion by the one or more processors or computers.
While this disclosure includes specific examples, it will be apparent after an understanding of the disclosure of this application that various changes in form and details may be made in these examples without departing from the spirit and scope of the claims and their equivalents. The examples described herein are to be considered in a descriptive sense only, and not for purposes of limitation. Descriptions of features or aspects in each example are to be considered as being applicable to similar features or aspects in other examples. Suitable results may be achieved if the described techniques are performed in a different order, and/or if components in a described system, architecture, device, or circuit are combined in a different manner, and/or replaced or supplemented by other components or their equivalents.
Therefore, in addition to the above disclosure, the scope of the disclosure may also be defined by the claims and their equivalents, and all variations within the scope of the claims and their equivalents are to be construed as being included in the disclosure.
Number | Date | Country | Kind |
---|---|---|---|
10-2022-0020308 | Feb 2022 | KR | national |