Training convolutional neural networks on graphics processing units
First Claim
1. A computer-implemented method for training a convolutional neural network to identify images using graphics data which can be read by a graphics processing unit (“
- GPU”
), and one or more GPU-executable programs, the graphics data representing the state of the convolutional neural network, the method comprising;
executing one or more of the GPU-executable programs on the GPU in order to perform a forward pass in the convolutional neural network;
executing one or more of the GPU-executable programs on the GPU in order to perform a backward pass in the convolutional neural network;
executing one or more of the GPU-executable programs on the GPU in order to modify the graphics data based on the results of the backward pass; and
repeating executing one or more of the GPU-executable programs to perform forward passes, backward passes, and to modify the graphics data until the convolutional neural network is trained.
2 Assignments
0 Petitions
Accused Products
Abstract
A convolutional neural network is implemented on a graphics processing unit. The network is then trained through a series of forward and backward passes, with convolutional kernels and bias matrices modified on each backward pass according to a gradient of an error function. The implementation takes advantage of parallel processing capabilities of pixel shader units on a GPU, and utilizes a set of start-to-finish formulas to program the computations on the pixel shaders. Input and output to the program is done through textures, and a multi-pass summation process is used when sums are needed across pixel shader unit registers.
39 Citations
20 Claims
-
1. A computer-implemented method for training a convolutional neural network to identify images using graphics data which can be read by a graphics processing unit (“
- GPU”
), and one or more GPU-executable programs, the graphics data representing the state of the convolutional neural network, the method comprising;
executing one or more of the GPU-executable programs on the GPU in order to perform a forward pass in the convolutional neural network;
executing one or more of the GPU-executable programs on the GPU in order to perform a backward pass in the convolutional neural network;
executing one or more of the GPU-executable programs on the GPU in order to modify the graphics data based on the results of the backward pass; and
repeating executing one or more of the GPU-executable programs to perform forward passes, backward passes, and to modify the graphics data until the convolutional neural network is trained. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13)
- GPU”
-
11. The method of claim it, wherein:
-
the one or more GPU-executable programs comprises one or more summations; and
each of the one or more summations is broken up into multiple passes.
-
-
14. One or more computer-readable media comprising instructions which, when executed on a graphics card, cause the graphics card to perform a method for training a neural network, the method comprising:
-
receiving a plurality of textures representing the neural network;
computing a plurality of forward passes of the neural network on a plurality of input data;
for each of the plurality of forward passes, computing a backward pass of the neural network using a gradient function; and
for each backward pass, based on the results of the gradient function, changing information contained in the plurality of textures to affect a training of the neural network. - View Dependent Claims (15, 16)
-
-
17. A graphics processing unit configured to perform a method for training a handwriting-recognition neural network, the graphics processing unit comprising:
-
data storage, configured to store one or more graphics textures, the graphics textures describing the handwriting-recognition neural network;
a plurality of pixel shader units configured via pixel shader programming;
to perform repeated forward passes and backward passes of the neural network on handwriting input data;
to store results in the plurality of graphics textures; and
to modify the plurality of textures based on results of the forward and backward passes in order to train the neural network. - View Dependent Claims (18, 19, 20)
-
Specification