|
--- |
|
license: apache-2.0 |
|
library_name: pytorch |
|
--- |
|
|
|
# identity |
|
|
|
A neuron that performs the IDENTITY logical computation. It generates the following truth table: |
|
|
|
| A | C | |
|
| - | - | |
|
| 0 | 0 | |
|
| 1 | 1 | |
|
|
|
It is inspired by McCulloch & Pitts' 1943 paper 'A Logical Calculus of the Ideas Immanent in Nervous Activity'. |
|
|
|
It doesn't contain any parameters. |
|
|
|
It takes as input a single column vector of zeros and ones. It outputs a single column vector of zeros and ones. |
|
|
|
Its mechanism is outlined in Figure 10-3 of Aurelien Geron's book 'Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow'. |
|
|
|
![](https://raw.githubusercontent.com/sambitmukherjee/handson-ml3-pytorch/main/chapter10/Figure_10-3.png) |
|
|
|
Like all the other neurons in Figure 10-3, it is activated when at least two of its input connections are active. |
|
|
|
Code: https://github.com/sambitmukherjee/handson-ml3-pytorch/blob/main/chapter10/logical_computations_with_neurons.ipynb |
|
|
|
## Usage |
|
|
|
``` |
|
import torch |
|
import torch.nn as nn |
|
from huggingface_hub import PyTorchModelHubMixin |
|
|
|
# Let's create a column vector containing two values - `0` and `1`: |
|
batch = torch.tensor([[0], [1]]) |
|
|
|
class IDENTITY(nn.Module, PyTorchModelHubMixin): |
|
def __init__(self): |
|
super().__init__() |
|
self.operation = "C = A" |
|
|
|
def forward(self, x): |
|
a = x |
|
inputs = torch.cat([a, a], dim=1) |
|
column_sum = torch.sum(inputs, dim=1, keepdim=True) |
|
output = (column_sum >= 2).long() |
|
return output |
|
|
|
# Instantiate: |
|
identity = IDENTITY.from_pretrained("sadhaklal/identity") |
|
|
|
# Forward pass: |
|
output = identity(batch) |
|
print(output) |
|
``` |