From 1ba32fc17c7513e6f7081147851541ae111ed498 Mon Sep 17 00:00:00 2001 From: Amy Page Date: Tue, 16 Dec 2025 21:42:05 +0000 Subject: [PATCH 1/4] Add new description of sigmoid function in sigmoid.md --- .../terms/sigmoid/sigmoid.md | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 content/pytorch/concepts/tensor-operations/terms/sigmoid/sigmoid.md diff --git a/content/pytorch/concepts/tensor-operations/terms/sigmoid/sigmoid.md b/content/pytorch/concepts/tensor-operations/terms/sigmoid/sigmoid.md new file mode 100644 index 00000000000..d296a05e761 --- /dev/null +++ b/content/pytorch/concepts/tensor-operations/terms/sigmoid/sigmoid.md @@ -0,0 +1,45 @@ +--- +Title: 'sigmoid' +Description: 'The sigmoid function is an S-shaped curve typically used in binary classification problems' +Subjects: + - 'AI' + - 'Machine Learning' +Tags: + - 'AI' + - 'Classification' + - 'Logistic Regression' + - 'Machine Learning' + - 'Math' + - 'Models' + - 'Neural Networks' + - 'Python' + - 'PyTorch' +CatalogContent: + - 'py-torch-for-classification' +  - 'intro-to-py-torch-and-neural-networks' +--- + +A **sigmoid** function is an S-shaped curve which maps any real-valued input to a bounded output, typically between 0 and 1. Sigmoid functions are regularly used as activation functions in non-linear classification problems, for example in neural networks, where the probability of a binary outcome is required. + +Although there are a range of sigmoid functions, in the field of AI the sigmoid function is usually synonymous with the logistic function, which is bound between 0 and 1. + +The formula for the sigmoid function is given by: +$$σ(x) = 1 / (1 + e^(-x))$$ + +## Examples + +The following example plots the sigmoid function: + +```py +import matplotlib.pyplot as plt +import torch + +x = torch.linspace(-10, 10, steps=400) +y = torch.sigmoid(x) + +plt.plot(x.numpy(), y.numpy() +plt.title("Sigmoid function") +plt.xlabel("x") +plt.ylabel("σ(x)") +plt.show() +``` From 30dcd5a1db94cd8127a0bc83119528e2bec67edb Mon Sep 17 00:00:00 2001 From: Mamta Wardhani Date: Wed, 17 Dec 2025 16:14:31 +0530 Subject: [PATCH 2/4] Revise title and description for sigmoid function Updated the title to '.sigmoid()' and clarified the description of the sigmoid function. --- .../concepts/tensor-operations/terms/sigmoid/sigmoid.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/pytorch/concepts/tensor-operations/terms/sigmoid/sigmoid.md b/content/pytorch/concepts/tensor-operations/terms/sigmoid/sigmoid.md index d296a05e761..8a0e107c76e 100644 --- a/content/pytorch/concepts/tensor-operations/terms/sigmoid/sigmoid.md +++ b/content/pytorch/concepts/tensor-operations/terms/sigmoid/sigmoid.md @@ -1,5 +1,5 @@ --- -Title: 'sigmoid' +Title: '.sigmoid()' Description: 'The sigmoid function is an S-shaped curve typically used in binary classification problems' Subjects: - 'AI' @@ -19,7 +19,7 @@ CatalogContent:   - 'intro-to-py-torch-and-neural-networks' --- -A **sigmoid** function is an S-shaped curve which maps any real-valued input to a bounded output, typically between 0 and 1. Sigmoid functions are regularly used as activation functions in non-linear classification problems, for example in neural networks, where the probability of a binary outcome is required. +A **`.sigmoid()`** function is an S-shaped curve which maps any real-valued input to a bounded output, typically between 0 and 1. Sigmoid functions are regularly used as activation functions in non-linear classification problems, for example in neural networks, where the probability of a binary outcome is required. Although there are a range of sigmoid functions, in the field of AI the sigmoid function is usually synonymous with the logistic function, which is bound between 0 and 1. From 59f15ba3ee631e507de982c4502afffed471d0f7 Mon Sep 17 00:00:00 2001 From: Amy Page Date: Sat, 20 Dec 2025 12:33:15 +0000 Subject: [PATCH 3/4] Address maintainer feedback --- .../terms/sigmoid/sigmoid.md | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/content/pytorch/concepts/tensor-operations/terms/sigmoid/sigmoid.md b/content/pytorch/concepts/tensor-operations/terms/sigmoid/sigmoid.md index 8a0e107c76e..e32427c65b8 100644 --- a/content/pytorch/concepts/tensor-operations/terms/sigmoid/sigmoid.md +++ b/content/pytorch/concepts/tensor-operations/terms/sigmoid/sigmoid.md @@ -1,6 +1,10 @@ --- Title: '.sigmoid()' +<<<<<<< HEAD Description: 'The sigmoid function is an S-shaped curve typically used in binary classification problems' +======= +Description: 'Applies the sigmoid activation to each element of a tensor, mapping values to a range between 0 and 1' +>>>>>>> c428da50f (Address maintainer feedback) Subjects: - 'AI' - 'Machine Learning' @@ -19,14 +23,18 @@ CatalogContent:   - 'intro-to-py-torch-and-neural-networks' --- +<<<<<<< HEAD A **`.sigmoid()`** function is an S-shaped curve which maps any real-valued input to a bounded output, typically between 0 and 1. Sigmoid functions are regularly used as activation functions in non-linear classification problems, for example in neural networks, where the probability of a binary outcome is required. +======= +The .sigmoid() function applies the sigmoid (logistic) function to each element of a tensor, producing an S-shaped curve that maps any real-valued input to a value between 0 and 1. +>>>>>>> c428da50f (Address maintainer feedback) -Although there are a range of sigmoid functions, in the field of AI the sigmoid function is usually synonymous with the logistic function, which is bound between 0 and 1. +In machine learning, sigmoid is commonly used as an activation function in binary classification tasks, where outputs represent probabilities." The formula for the sigmoid function is given by: $$σ(x) = 1 / (1 + e^(-x))$$ -## Examples +## Example The following example plots the sigmoid function: @@ -37,9 +45,20 @@ import torch x = torch.linspace(-10, 10, steps=400) y = torch.sigmoid(x) -plt.plot(x.numpy(), y.numpy() +plt.plot(x.numpy(), y.numpy()) plt.title("Sigmoid function") plt.xlabel("x") plt.ylabel("σ(x)") plt.show() ``` + +This example applies the sigmoid function to a tensor: + +```py +import torch + +x = torch.tensor([-1.8, -1.5, 0.0, 2.0, 4.0]) +y = torch.sigmoid(x) + +print(y) +``` \ No newline at end of file From f5321dbc1d9a74ae3ab559d2d44c269f8fe97ed5 Mon Sep 17 00:00:00 2001 From: Amy Page Date: Tue, 6 Jan 2026 22:54:59 +0000 Subject: [PATCH 4/4] Add example plot --- media/sigmoid-example.png | Bin 0 -> 19686 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 media/sigmoid-example.png diff --git a/media/sigmoid-example.png b/media/sigmoid-example.png new file mode 100644 index 0000000000000000000000000000000000000000..872e27842b45e0a111f68778e308ad1a060bc1db GIT binary patch literal 19686 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 literal 0 HcmV?d00001