[![Multi-Modality](agorabanner.png)](https://discord.gg/qUtxnK2NMf)
# Gradient Equilibrum
Gradient Equilibrium is a numerical optimization technique used to find the point at which a function reaches its global middle. This is different from traditional gradient descent methods, which seek to minimize or maximize a function. Instead, Gradient Equilibrium tries to find the point where the function value is at its average or equilibrium.
# Install
`pip install gradient-equilibrum`
# Usage
```python
import torch
import torch.nn as nn
from ge.main import GradientEquilibrum # Import your optimizer class
# Define a sample model
class SampleModel(nn.Module):
def __init__(self):
super(SampleModel, self).__init__()
self.fc = nn.Linear(10, 10)
def forward(self, x):
return self.fc(x)
# Create a sample model and data
model = SampleModel()
data = torch.randn(64, 10)
target = torch.randn(64, 10)
loss_fn = nn.MSELoss()
# Initialize your GradientEquilibrum optimizer
optimizer = GradientEquilibrum(model.parameters(), lr=0.01)
# Training loop
epochs = 100
for epoch in range(epochs):
# Zero the gradients
optimizer.zero_grad()
# Forward pass
output = model(data)
# Calculate the loss
loss = loss_fn(output, target)
# Backward pass
loss.backward()
# Update the model's parameters using the optimizer
optimizer.step()
# Print the loss for monitoring
print(f"Epoch [{epoch+1}/{epochs}], Loss: {loss.item()}")
# After training, you can use the trained model for inference
```
## **Why Gradient Equilibrium?**
In many real-world scenarios, it's not always about finding the minimum or maximum. Sometimes, we might be interested in finding a balance or an average. This is where Gradient Equilibrium comes into play. For example, in load balancing problems or in scenarios where resources need to be evenly distributed, finding an equilibrium point is more relevant than finding extremes.
## **Algorithmic Pseudocode**
```
Function GradientEquilibrium(Function f, float learning_rate, int max_iterations):
Initialize x = random value within the domain of f
Initialize previous_x = x + 1 // Just to ensure we enter the loop
For i = 1 to max_iterations and |previous_x - x| > small_value:
previous_x = x
// Compute gradient of f at x
gradient = derivative(f, x)
// Update x using gradient descent
x = x - learning_rate * gradient
End For
Return x
End Function
Function derivative(Function f, float x):
delta_x = small_value
Return (f(x + delta_x) - f(x)) / delta_x
End Function
```
**How does the Algorithm Work?**
The Gradient Equilibrium algorithm starts by initializing a random value within the domain of the function. This value serves as our starting point.
During each iteration, we calculate the gradient or derivative of the function at the current point. The gradient gives us the direction of steepest ascent. Since we are looking for the equilibrium, we move against the gradient by a factor of the learning rate. This step is similar to the gradient descent method but with a different goal in mind.
The algorithm stops iterating when the change between the current value and the previous value is less than a small threshold or when the maximum number of iterations is reached.
**Applications of Gradient Equilibrium**
1. **Load Balancing**: In distributed systems, ensuring that each server or node handles an approximately equal share of requests is crucial. Gradient Equilibrium can be used to find the optimal distribution.
2. **Resource Allocation**: Whether it's distributing funds, manpower, or any other resource, Gradient Equilibrium can help find the point where each division or department gets an average share.
3. **Economic Models**: In economics, equilibrium points where supply meets demand are of great significance. Gradient Equilibrium can be applied to find such points in complex economic models.
**Conclusion**
Gradient Equilibrium offers a fresh perspective on optimization problems. Instead of always seeking extremes, sometimes the middle ground or average is more relevant. With its straightforward approach and wide range of applications, Gradient Equilibrium is an essential tool for modern-day problem solvers.
# License
MIT
Raw data
{
"_id": null,
"home_page": "https://github.com/kyegomez/GradientEquillibrum",
"name": "gradient-equilibrum",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6,<4.0",
"maintainer_email": "",
"keywords": "artificial intelligence,deep learning,optimizers,Prompt Engineering",
"author": "Kye Gomez",
"author_email": "kye@apac.ai",
"download_url": "https://files.pythonhosted.org/packages/64/31/282c15793c4216b341d1dc233e3efb5104b82969e767058f1cf9d2de0bc6/gradient_equilibrum-0.0.3.tar.gz",
"platform": null,
"description": "[![Multi-Modality](agorabanner.png)](https://discord.gg/qUtxnK2NMf)\n\n# Gradient Equilibrum\nGradient Equilibrium is a numerical optimization technique used to find the point at which a function reaches its global middle. This is different from traditional gradient descent methods, which seek to minimize or maximize a function. Instead, Gradient Equilibrium tries to find the point where the function value is at its average or equilibrium.\n\n\n# Install\n`pip install gradient-equilibrum`\n\n# Usage\n```python\n\nimport torch\nimport torch.nn as nn\nfrom ge.main import GradientEquilibrum # Import your optimizer class\n\n# Define a sample model\nclass SampleModel(nn.Module):\n def __init__(self):\n super(SampleModel, self).__init__()\n self.fc = nn.Linear(10, 10)\n\n def forward(self, x):\n return self.fc(x)\n\n# Create a sample model and data\nmodel = SampleModel()\ndata = torch.randn(64, 10)\ntarget = torch.randn(64, 10)\nloss_fn = nn.MSELoss()\n\n# Initialize your GradientEquilibrum optimizer\noptimizer = GradientEquilibrum(model.parameters(), lr=0.01)\n\n# Training loop\nepochs = 100\nfor epoch in range(epochs):\n # Zero the gradients\n optimizer.zero_grad()\n\n # Forward pass\n output = model(data)\n\n # Calculate the loss\n loss = loss_fn(output, target)\n\n # Backward pass\n loss.backward()\n\n # Update the model's parameters using the optimizer\n optimizer.step()\n\n # Print the loss for monitoring\n print(f\"Epoch [{epoch+1}/{epochs}], Loss: {loss.item()}\")\n\n# After training, you can use the trained model for inference\n\n```\n\n## **Why Gradient Equilibrium?**\n\nIn many real-world scenarios, it's not always about finding the minimum or maximum. Sometimes, we might be interested in finding a balance or an average. This is where Gradient Equilibrium comes into play. For example, in load balancing problems or in scenarios where resources need to be evenly distributed, finding an equilibrium point is more relevant than finding extremes.\n\n## **Algorithmic Pseudocode**\n\n```\nFunction GradientEquilibrium(Function f, float learning_rate, int max_iterations):\n\n Initialize x = random value within the domain of f\n Initialize previous_x = x + 1 // Just to ensure we enter the loop\n\n For i = 1 to max_iterations and |previous_x - x| > small_value:\n previous_x = x\n \n // Compute gradient of f at x\n gradient = derivative(f, x)\n \n // Update x using gradient descent\n x = x - learning_rate * gradient\n\n End For\n\n Return x\n\nEnd Function\n\nFunction derivative(Function f, float x):\n delta_x = small_value\n Return (f(x + delta_x) - f(x)) / delta_x\nEnd Function\n```\n\n\n**How does the Algorithm Work?**\n\nThe Gradient Equilibrium algorithm starts by initializing a random value within the domain of the function. This value serves as our starting point. \n\nDuring each iteration, we calculate the gradient or derivative of the function at the current point. The gradient gives us the direction of steepest ascent. Since we are looking for the equilibrium, we move against the gradient by a factor of the learning rate. This step is similar to the gradient descent method but with a different goal in mind.\n\nThe algorithm stops iterating when the change between the current value and the previous value is less than a small threshold or when the maximum number of iterations is reached.\n\n**Applications of Gradient Equilibrium**\n\n1. **Load Balancing**: In distributed systems, ensuring that each server or node handles an approximately equal share of requests is crucial. Gradient Equilibrium can be used to find the optimal distribution.\n\n2. **Resource Allocation**: Whether it's distributing funds, manpower, or any other resource, Gradient Equilibrium can help find the point where each division or department gets an average share.\n\n3. **Economic Models**: In economics, equilibrium points where supply meets demand are of great significance. Gradient Equilibrium can be applied to find such points in complex economic models.\n\n**Conclusion**\n\nGradient Equilibrium offers a fresh perspective on optimization problems. Instead of always seeking extremes, sometimes the middle ground or average is more relevant. With its straightforward approach and wide range of applications, Gradient Equilibrium is an essential tool for modern-day problem solvers.\n\n\n# License \nMIT\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Gradient Equillibrum - Pytorch",
"version": "0.0.3",
"project_urls": {
"Homepage": "https://github.com/kyegomez/GradientEquillibrum",
"Repository": "https://github.com/kyegomez/GradientEquillibrum"
},
"split_keywords": [
"artificial intelligence",
"deep learning",
"optimizers",
"prompt engineering"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ece4b8e087ec93e45ccdfe891fd73617b8bc3afcaa47ad254d0fce4a293a3ddb",
"md5": "872d369f40c1a0218c852e366cdcd890",
"sha256": "ef01e5cb590ac3a855d2920556f7d478f319dc1e25e97638d4c03ef620c6d92d"
},
"downloads": -1,
"filename": "gradient_equilibrum-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "872d369f40c1a0218c852e366cdcd890",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6,<4.0",
"size": 5122,
"upload_time": "2023-11-13T01:11:09",
"upload_time_iso_8601": "2023-11-13T01:11:09.194789Z",
"url": "https://files.pythonhosted.org/packages/ec/e4/b8e087ec93e45ccdfe891fd73617b8bc3afcaa47ad254d0fce4a293a3ddb/gradient_equilibrum-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6431282c15793c4216b341d1dc233e3efb5104b82969e767058f1cf9d2de0bc6",
"md5": "5aed08dc9ae7eb24500c384f839b62f3",
"sha256": "8c7decfd47fd641dff142c6ded20ba671e7dbf901fe9aa0ae4b5df80465561a3"
},
"downloads": -1,
"filename": "gradient_equilibrum-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "5aed08dc9ae7eb24500c384f839b62f3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6,<4.0",
"size": 5279,
"upload_time": "2023-11-13T01:11:11",
"upload_time_iso_8601": "2023-11-13T01:11:11.290332Z",
"url": "https://files.pythonhosted.org/packages/64/31/282c15793c4216b341d1dc233e3efb5104b82969e767058f1cf9d2de0bc6/gradient_equilibrum-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-11-13 01:11:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "kyegomez",
"github_project": "GradientEquillibrum",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "gradient-equilibrum"
}