IP Library › Granted Patent US 12,417,388
Granted Patent B1
US 12,417,388 · App. 17/083,186 · Granted Sep 16, 2025

Hardware implementations of activation functions in neural networks

Inventor: Bindiganavale S. Nataraj (Cupertino, CA)
G06N3/084G06N3/04
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 12,417,388
App. No.
17/083,186
Granted
Sep 16, 2025
Kind
B1
Abstract

Circuitry for performing neural-network calculations includes a plurality of compute circuits, arranged in parallel with respective inputs and outputs, to receive function arguments for a node of a neural network on their respective inputs, compute values of a plurality of activation functions using the function arguments, and provide the values on their respective outputs. Each compute circuit of the plurality of compute circuits is to compute the values of a respective activation function of the plurality of activation functions. The circuitry also includes a multiplexor to select between the respective outputs of the plurality of compute circuits and to provide the values on a selected output as activation-function values for the node of the neural network, based on an activation-function selection signal.

Claims (54)

1. Circuitry for performing neural-network calculations, comprising:

a plurality of compute circuits, arranged in parallel and having respective inputs and outputs, to receive function arguments for a node of a neural network on their respective inputs, compute values of a plurality of activation functions using the function arguments, and provide the values on their respective outputs, wherein each compute circuit of the plurality of compute circuits is to compute the values of a respective activation function of the plurality of activation functions;

a pre-processor to provide the function arguments to the respective inputs of the plurality of compute circuits, the pre-processor comprising an input to receive input data for the node and processor circuitry to generate the function arguments using the input data, weights for the node, and a bias for the node; and

a multiplexor to select between the respective outputs of the plurality of compute circuits and to provide the values on a selected output as activation-function values for the node of the neural network, based on an activation-function selection signal.

2. The circuitry of claim 1 , wherein the pre-processor comprises a de-multiplexor to provide a respective function argument to a respective input of a selected compute circuit of the plurality of compute circuits, based on the activation-function selection signal.

3. The circuitry of claim 1 , further comprising a cache memory, coupled to the multiplexor and the pre-processor, to store the activation-function values;

wherein the pre-processor is to retrieve stored activation-function values from the cache memory during backward propagation through the neural network in a training procedure for the neural network.

4. The circuitry of claim 3 , wherein the processor circuitry is to:

cache the weights and the bias in the cache memory;

retrieve the weights and the bias from the cache memory;

update the weights and the bias during the backward propagation; and

cache the updated weights and the updated bias in the cache memory.

5. The circuitry of claim 1 , wherein:

the node is a first node in a first layer of the neural network, the first layer comprising a plurality of nodes including the first node; and

the pre-processor is to provide function arguments for the plurality of nodes of the first layer to one or more compute circuits of the plurality of compute circuits.

6. The circuitry of claim 1 , wherein:

the node is a first node in a first layer of the neural network, the first layer comprising a plurality of nodes including the first node; and

the pre-processor is to provide function arguments for a subset of the plurality of nodes of the first layer to one or more compute circuits of the plurality of compute circuits, the subset comprising the first node.

7. The circuitry of claim 1 , wherein:

the node is a first node in a first layer of nodes of the neural network;

the neural network comprises a plurality of layers of nodes, including the first layer and a second layer of nodes; and

the pre-processor is to provide function arguments for the nodes of the first layer and the second layer to one or more compute circuits of the plurality of compute circuits.

8. The circuitry of claim 1 , wherein the plurality of activation functions comprises activation functions selected from the group consisting of a sigmoid function, a hyperbolic tangent function, a rectified linear unit (ReLU) function, a leaky ReLU function, a max-pooling function, an average-pooling function, and a zero-activation function that provides all zeros.

9. The circuitry of claim 1 , wherein:

the plurality of activation functions comprises at least one of a sigmoid function or a hyperbolic tangent function; and

the plurality of compute circuits comprises a compute circuit comprising a multiply-accumulate unit to calculate a Taylor-series approximation of the sigmoid function or the hyperbolic tangent function.

10. A method of performing neural-network calculations, comprising:

using processor circuitry of a pre-processor, generating a function argument for a node of a neural network using input data for the node, weights for the node, and a bias for the node;

providing the function argument for the node of the neural network from the pre-processor to one or more compute circuits of a plurality of compute circuits, wherein:

the plurality of compute circuits is arranged in parallel and has respective inputs and outputs,

the pre-processor is coupled to the inputs of the plurality of compute circuits,

the pre-processor provides the function argument to respective inputs of the one or more compute circuits of the plurality of compute circuits, and

each compute circuit of the plurality of compute circuits is configured to compute a value of a respective activation function of a plurality of activation functions using the function argument;

selecting an output of a respective compute circuit of the plurality of compute circuits, based on an activation-function selection signal; and

providing a value on the selected output as an activation-function value for the node of the neural network.

11. The method of claim 10 , wherein providing the function argument from the pre-processor to the one or more compute circuits comprises providing the function argument from the pre-processor to each input of the plurality of compute circuits in parallel.

12. The method of claim 10 , further comprising selecting a respective compute circuit of the plurality of compute circuits, based on the activation-function selection signal;

wherein the pre-processor provides the function argument to the input of the selected compute circuit.

13. The method of claim 10 , further comprising caching the activation-function value for the node in a cache memory.

14. The method of claim 13 , further comprising retrieving the activation-function value from the cache memory during backward propagation through the neural network in a training procedure for the neural network.

15. The method of claim 14 , further comprising:

caching the weights and the bias in the cache memory;

in the pre-processor, updating the weights and the bias during the backward propagation; and

caching the updated weights and the updated bias in the cache memory.

16. The method of claim 10 , wherein:

the node is a respective node in a first layer of the neural network, the first layer comprising a plurality of nodes; and

the method further comprises performing the providing of the function argument, the selecting of the output, and the providing of the value for each node in the first layer.

17. The method of claim 10 , wherein:

the node is a respective node in a first layer of the neural network, the first layer comprising a plurality of nodes; and

the method further comprises performing the providing of the function argument, the selecting of the output, and the providing of the value for a subset of the plurality of nodes in the first layer.

18. The method of claim 10 , wherein:

the node is a respective node in a first layer of nodes of the neural network;

the neural network comprises a plurality of layers of nodes, including the first layer and a second layer of nodes; and

the method further comprises performing the providing of the function argument, the selecting of the output, and the providing of the value for each node in the first layer and each node in the second layer.

Continuity (1)
Provisional Application 63034907 · Jun 4, 2020
References Cited (6)
US 20170103321A1 · Henry · 2017 [cited by examiner]
US 20190325289A1 · Cammarota · 2019 [cited by examiner]
US 20200074293A1 · Chin · 2020 [cited by examiner]
US 20200327271A1 · Langhammer · 2020 [cited by examiner]
US 20210232899A1 · Takamaeda · 2021 [cited by examiner]
US 20210304010A1 · Sengupta · 2021 [cited by examiner]
Cited By (1)
US 12,681,447