| | --- |
| | library_name: transformers |
| | tags: [] |
| | --- |
| | |
| | # Usage |
| |
|
| | Define the model and config |
| | ```python |
| | from transformers import PreTrainedModel, PretrainedConfig |
| | import torch.nn as nn |
| | import torch.nn.functional as F |
| | |
| | class MNISTConfig(PretrainedConfig): |
| | model_type = "mnist_classifier" |
| | |
| | def __init__(self, input_size=784, hidden_size1=1024, hidden_size2=512, num_labels=10, **kwargs): |
| | super().__init__(**kwargs) |
| | self.input_size = input_size |
| | self.hidden_size1 = hidden_size1 |
| | self.hidden_size2 = hidden_size2 |
| | self.num_labels = num_labels |
| | |
| | class MNISTClassifier(PreTrainedModel): |
| | config_class = MNISTConfig |
| | |
| | def __init__(self, config): |
| | super().__init__(config) |
| | self.layer1 = nn.Linear(config.input_size, config.hidden_size1) |
| | self.layer2 = nn.Linear(config.hidden_size1, config.hidden_size2) |
| | self.layer3 = nn.Linear(config.hidden_size2, config.num_labels) |
| | |
| | def forward(self, pixel_values): |
| | inputs = pixel_values.view(-1, self.config.input_size) |
| | outputs = self.layer1(inputs) |
| | outputs = F.leaky_relu(outputs) |
| | outputs = self.layer2(outputs) |
| | outputs = F.leaky_relu(outputs) |
| | outputs = self.layer3(outputs) |
| | return outputs |
| | ``` |
| |
|
| | Register the model |
| |
|
| | ```python |
| | from transformers import AutoConfig, AutoModel |
| | |
| | AutoConfig.register("mnist_classifier", MNISTConfig) |
| | AutoModel.register(MNISTConfig, MNISTClassifier) |
| | ``` |
| |
|
| | Run Inference |
| | ```python |
| | from transformers import AutoConfig, AutoModel |
| | import torch |
| | |
| | config = AutoConfig.from_pretrained("jerilseb/mnist-classifier") |
| | model = AutoModel.from_pretrained("jerilseb/mnist-classifier") |
| | |
| | input_tensor = torch.randn(1, 28, 28) # Single image, adjust batch size as needed |
| | |
| | with torch.no_grad(): |
| | output = model(input_tensor) |
| | |
| | predicted_class = output.argmax(-1).item() |
| | print(f"Predicted class: {predicted_class}") |
| | ``` |
| |
|