IP Library Granted Patent US 11,106,976
Granted Patent B2
US 11,106,976 · App. 16/459,731 · Granted Aug 31, 2021

Neural network output layer for machine learning

Inventor: Sylvain Flamant (Saratoga, CA)
Assignee: Wave Computing, Inc.
G06N3/08G06F16/902G06F17/16
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,106,976
App. No.
16/459,731
Granted
Aug 31, 2021
Kind
B2
Abstract

Techniques for a neural network output layer for machine learning are disclosed. A plurality of processing elements within a reconfigurable fabric is configured to implement a data flow graph, where the data flow graph implements a neural network. The data flow graph can include machine learning or deep learning. A layer is implemented, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one, where the second vector sums to a value of one using fixed-point calculations. The layer can include a final layer within the neural network. The layer that maps the first vector includes a Softmax function. Results of the neural network are classified based on a value of the second vector. The classifying can include part of a machine learning or a deep learning process.

Claims (149)

1. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, based on a parabolic estimator function,

within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector.

2. The method of claim 1 wherein the layer is a final layer within the neural network.

3. The method of claim 1 wherein the layer that maps the first vector comprises a Softmax function.

4. The method of claim 3 wherein the layer that maps the first vector is an output layer for the neural network.

5. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network; and

the layer is based on a parabolic estimator function.

6. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network,

the layer is based on a parabolic estimator function; and

the parabolic estimator function is implemented using lookup tables.

7. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network,

the layer is based on a parabolic estimator function;

the parabolic estimator function is implemented using lookup tables; and

the lookup tables comprise three lookup tables.

8. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network,

the layer is based on a parabolic estimator function;

the parabolic estimator function is implemented using lookup tables;

the lookup tables comprise three lookup tables; and

further comprising two multiplex per element of an output vector.

9. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network,

the layer is based on a parabolic estimator function;

the parabolic estimator function is implemented using lookup tables;

the lookup tables comprise three lookup tables;

further comprising two multiplex per element of an output vector; and

no more than three multipliers per element of an output vector are used.

10. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network,

the layer is based on a parabolic estimator function;

the parabolic estimator function is implemented using lookup tables;

the lookup tables comprise three lookup tables; and

the three lookup tables are each 256 elements or fewer in length.

11. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network,

the layer is based on a parabolic estimator function;

the parabolic estimator function is implemented using lookup tables; and

the lookup tables comprise equidistant points.

12. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network,

the layer is based on a parabolic estimator function;

the parabolic estimator function is implemented using lookup tables;

the lookup tables comprise equidistant points; and

values between two equidistant points with a lookup table correspond to an integer number of intervals between the two points.

13. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network,

the layer is based on a parabolic estimator function;

the parabolic estimator function is implemented using lookup tables;

the lookup tables comprise equidistant points;

values between two equidistant points with a lookup table correspond to an integer number of intervals between the two points; and

the integer number of intervals is based on a power of two.

14. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network;

the layer is based on a parabolic estimator function; and

the parabolic estimator function is implemented using one lookup table.

15. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network;

the layer is based on a parabolic estimator function; and

the parabolic estimator function is based on a moving set of three points.

16. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network;

the layer is based on a parabolic estimator function; and

the parabolic estimator function implements e Xi or k Xi for the layer, where Xi are arguments of the Softmax function, k is a real number greater than 1, and e is the natural logarithm base.

17. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network;

the layer is based on a parabolic estimator function;

the parabolic estimator function implements e Xi or k Xi for the layer, where Xi are arguments of the Softmax function, k is a real number greater than 1, and e is the natural logarithm base; and

k Xi is calculated using 16-bit fixed-point arithmetic.

18. A processor-implemented method for data manipulation comprising:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector;

wherein the layer that maps the first vector comprises a Softmax function,

the layer that maps the first vector is an output layer for the neural network;

the layer is based on a parabolic estimator function;

the parabolic estimator function implements e Xi or k Xi for the layer, where Xi are arguments of the Softmax function, k is a real number greater than 1, and e is the natural logarithm base; and

k is equal to 2.

19. The method of claim 1 further comprising using 16-bit fixed-point arithmetic for training passes.

20. The method of claim 6 wherein lookup table entries are calculated offline.

21. A computer program product embodied in a non-transitory computer readable medium for data manipulation, the computer program product comprising code which causes one or more processors to perform operations of:

configuring a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implementing a layer, based on a parabolic estimator function,

within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums of one using fixed point calculations; and

classifying results of the neural network based on a value of the second vector.

22. A computer system for data manipulation comprising:

a memory which stores instructions;

one or more processors coupled to the memory wherein the one or more processors, when executing the instructions which are stored, are configured to

configure a plurality of processing elements within a reconfigurable fabric to implement a data flow graph, wherein the data flow graph implements a neural network;

implement a layer, based on a parabolic estimator function,

within the neural network, that maps a first vector of real values to a second vector of real values bounded by zero and one wherein the second vector sums to a value of one using fixed point calculations; and

classify results of the neural network based on a value of the second vector.

Assignments (6)
CHANGE OF NAME Recorded May 8, 2024
From: WAVE COMPUTING, INC.
To: MIPS HOLDING, INC.
Reel/Frame 067355/0324 →
RELEASE OF SECURITY INTEREST Recorded Dec 29, 2022
From: CAPITAL FINANCE ADMINISTRATION, LLC, AS ADMINISTRATIVE AGENT
To: MIPS TECH, LLC; WAVE COMPUTING INC.
Reel/Frame 062251/0251 →
SECURITY INTEREST Recorded Jun 14, 2021
From: MIPS TECH, LLC; WAVE COMPUTING, INC.
To: CAPITAL FINANCE ADMINISTRATION, LLC
Reel/Frame 056558/0903 →
RELEASE OF SECURITY INTEREST Recorded Jun 14, 2021
From: WAVE COMPUTING LIQUIDATING TRUST
To: MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.; MIPS TECH, LLC; WAVE COMPUTING, INC.
Reel/Frame 056589/0606 →
SECURITY INTEREST Recorded Feb 26, 2021
From: WAVE COMPUTING, INC.; MIPS TECH, LLC; MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.
To: WAVE COMPUTING LIQUIDATING TRUST
Reel/Frame 055429/0532 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2019
From: FLAMANT, SYLVAIN
To: WAVE COMPUTING, INC.
Reel/Frame 050061/0403 →
Continuity (24)
Continuation In Part 16104586 · Aug 17, 2018
Provisional Application 62856490 · Jun 3, 2019
Provisional Application 62850059 · May 20, 2019
Provisional Application 62827333 · Apr 1, 2019
Provisional Application 62802307 · Feb 7, 2019
Provisional Application 62800432 · Feb 2, 2019
Provisional Application 62773486 · Nov 30, 2018
Provisional Application 62694984 · Jul 7, 2018
Provisional Application 62692993 · Jul 2, 2018
Provisional Application 62679046 · Jun 1, 2018
Provisional Application 62679172 · Jun 1, 2018
Provisional Application 62650425 · Mar 30, 2018
Provisional Application 62650758 · Mar 30, 2018
Provisional Application 62637614 · Mar 2, 2018
Provisional Application 62636309 · Feb 28, 2018
Provisional Application 62611600 · Dec 29, 2017
Provisional Application 62611588 · Dec 29, 2017
Provisional Application 62594563 · Dec 5, 2017
Provisional Application 62594582 · Dec 5, 2017
Provisional Application 62579616 · Oct 31, 2017
Provisional Application 62577902 · Oct 27, 2017
Provisional Application 62547769 · Aug 19, 2017
Provisional Application 62857925 · Jun 6, 2019
Related Publication 20190325309A1 · Oct 24, 2019
Cited By (1)
US 12,346,797