Skip to content

Commit

Permalink
pulsar
Browse files Browse the repository at this point in the history
  • Loading branch information
Kye committed Oct 12, 2023
1 parent 64a0a96 commit 1374c08
Show file tree
Hide file tree
Showing 10 changed files with 62 additions and 2 deletions.
Binary file added data/MNIST/raw/t10k-images-idx3-ubyte
Binary file not shown.
Binary file added data/MNIST/raw/t10k-images-idx3-ubyte.gz
Binary file not shown.
Binary file added data/MNIST/raw/t10k-labels-idx1-ubyte
Binary file not shown.
Binary file added data/MNIST/raw/t10k-labels-idx1-ubyte.gz
Binary file not shown.
Binary file added data/MNIST/raw/train-images-idx3-ubyte
Binary file not shown.
Binary file added data/MNIST/raw/train-images-idx3-ubyte.gz
Binary file not shown.
Binary file added data/MNIST/raw/train-labels-idx1-ubyte
Binary file not shown.
Binary file added data/MNIST/raw/train-labels-idx1-ubyte.gz
Binary file not shown.
54 changes: 54 additions & 0 deletions playground/modules/pulsar.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import time

import torch
import torch.nn as nn
import torch.optim as optim
import torchvision.datasets as datasets
import torchvision.transforms as transforms
from zeta.nn.modules.pulsar import Pulsar

# --- Neural Network Definition ---
class NeuralNetwork(nn.Module):
def __init__(self, activation_function):
super(NeuralNetwork, self).__init__()
self.fc1 = nn.Linear(28*28, 512)
self.fc2 = nn.Linear(512, 256)
self.fc3 = nn.Linear(256, 10)
self.activation = activation_function

def forward(self, x):
x = x.view(-1, 28*28)
x = self.activation(self.fc1(x))
x = self.activation(self.fc2(x))
return self.fc3(x)

# --- Dataset Preparation ---
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
train_dataset = datasets.MNIST(root='./data', train=True, transform=transform, download=True)
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True)

# --- Training Function ---
def train(model, train_loader, epochs=5):
optimizer = optim.Adam(model.parameters(), lr=0.001)
criterion = nn.CrossEntropyLoss()
for epoch in range(epochs):
for i, (images, labels) in enumerate(train_loader):
outputs = model(images)
loss = criterion(outputs, labels)
optimizer.zero_grad()
loss.backward()
optimizer.step()

# --- Benchmarking ---
activations = {
"ReLU": nn.ReLU(),
"LogGamma": Pulsar(),
}

for name, act in activations.items():
model = NeuralNetwork(act)
start_time = time.time()
train(model, train_loader)
end_time = time.time()

print(f"{name} - Training Time: {end_time - start_time:.2f} seconds")
10 changes: 8 additions & 2 deletions zeta/nn/modules/pulsar.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import torch
from torch import nn
import time

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torchvision.datasets as datasets
import torchvision.transforms as transforms


class LogGammaActivation(torch.autograd.Function):
Expand Down Expand Up @@ -67,3 +72,4 @@ def forward(self, x):
"""
return LogGammaActivation.apply(x)


0 comments on commit 1374c08

Please sign in to comment.