sanjithrj commited on
Commit
1d2de52
·
verified ·
1 Parent(s): d6d0397

Upload model

Browse files
Files changed (3) hide show
  1. config.json +6 -1
  2. model.py +89 -0
  3. model.safetensors +3 -0
config.json CHANGED
@@ -1,6 +1,10 @@
1
  {
 
 
 
2
  "auto_map": {
3
- "AutoConfig": "config.FeelWiseConfig"
 
4
  },
5
  "d_ff": 1024,
6
  "d_model": 256,
@@ -11,5 +15,6 @@
11
  "n_head": 8,
12
  "n_layers": 1,
13
  "num_classes": 6,
 
14
  "transformers_version": "4.45.2"
15
  }
 
1
  {
2
+ "architectures": [
3
+ "FeelWiseModel"
4
+ ],
5
  "auto_map": {
6
+ "AutoConfig": "config.FeelWiseConfig",
7
+ "AutoModel": "model.FeelWiseModel"
8
  },
9
  "d_ff": 1024,
10
  "d_model": 256,
 
15
  "n_head": 8,
16
  "n_layers": 1,
17
  "num_classes": 6,
18
+ "torch_dtype": "float32",
19
  "transformers_version": "4.45.2"
20
  }
model.py ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+ import numpy as np
3
+ import torch
4
+ from transformers import PreTrainedModel
5
+ from .config import FeelWiseConfig
6
+
7
+ class PositionalEncoding(nn.Module):
8
+ def __init__(self, d_model, max_len=500):
9
+ super(PositionalEncoding, self).__init__()
10
+ self.d_model = d_model
11
+ pos = np.arange(max_len)[:, np.newaxis]
12
+ i = np.arange(d_model)[np.newaxis, :]
13
+ angle_rates = 1 / np.power(10000, (2 * (i // 2)) / np.float32(d_model))
14
+ pos_encoding = pos * angle_rates
15
+ pos_encoding[:, 0::2] = np.sin(pos_encoding[:, 0::2])
16
+ pos_encoding[:, 1::2] = np.cos(pos_encoding[:, 1::2])
17
+ self.pos_encoding = torch.tensor(pos_encoding, dtype=torch.float32)
18
+
19
+ def forward(self, x):
20
+ x = x * np.sqrt(self.d_model)
21
+ x = x + self.pos_encoding[:x.size(1), :].to(x.device)
22
+ return x
23
+
24
+ class AddNorm(nn.Module):
25
+ def __init__(self, d_model):
26
+ super(AddNorm, self).__init__()
27
+ self.layer_norm = nn.LayerNorm(d_model)
28
+
29
+ def forward(self, x, sub_layer_x):
30
+ return self.layer_norm(x + sub_layer_x)
31
+
32
+ class FeedForward(nn.Module):
33
+ def __init__(self, d_model, d_ff):
34
+ super(FeedForward, self).__init__()
35
+ self.linear1 = nn.Linear(d_model, d_ff)
36
+ self.linear2 = nn.Linear(d_ff, d_model)
37
+ self.relu = nn.ReLU()
38
+
39
+ def forward(self, x):
40
+ return self.linear2(self.relu(self.linear1(x)))
41
+
42
+ class EncoderLayer(nn.Module):
43
+ def __init__(self, d_model, n_head, d_ff, dropout=0.1):
44
+ super(EncoderLayer, self).__init__()
45
+ self.multi_head_attention = nn.MultiheadAttention(d_model, n_head)
46
+ self.add_norm1 = AddNorm(d_model)
47
+ self.feed_forward = FeedForward(d_model, d_ff)
48
+ self.add_norm2 = AddNorm(d_model)
49
+ self.dropout = nn.Dropout(dropout)
50
+
51
+ def forward(self, x):
52
+ sub_layer_x = self.multi_head_attention(x, x, x)[0]
53
+ sub_layer_x = self.dropout(sub_layer_x)
54
+ x = self.add_norm1(x, sub_layer_x)
55
+ sub_layer_x = self.feed_forward(x)
56
+ sub_layer_x = self.dropout(sub_layer_x)
57
+ x = self.add_norm2(x, sub_layer_x)
58
+ return x
59
+
60
+ class Encoder(nn.Module):
61
+ def __init__(self, n_layers, d_model, max_len, input_vocab_size, n_head, d_ff, dropout=0.1):
62
+ super(Encoder, self).__init__()
63
+ self.layers = nn.ModuleList([EncoderLayer(d_model, n_head, d_ff, dropout) for _ in range(n_layers)])
64
+ self.embedding = nn.Embedding(input_vocab_size, d_model)
65
+ self.pos_encoding = PositionalEncoding(d_model, max_len)
66
+ self.dropout = nn.Dropout(dropout)
67
+
68
+ def forward(self, x):
69
+ x = self.embedding(x)
70
+ x = self.pos_encoding(x)
71
+ x = self.dropout(x)
72
+ for layer in self.layers:
73
+ x = layer(x)
74
+ return x
75
+
76
+ class FeelWiseModel(PreTrainedModel):
77
+ config_class = FeelWiseConfig
78
+ base_model_prefix = "FeelWiseEmotion"
79
+
80
+ def __init__(self, config):
81
+ super().__init__(config)
82
+ self.encoder = Encoder(config.n_layers, config.d_model, config.max_len, config.input_vocab_size, config.n_head, config.d_ff, config.dropout)
83
+ self.fc = nn.Linear(config.d_model, config.num_classes) # Final classification layer
84
+
85
+ def forward(self, input_ids):
86
+ x = self.encoder(input_ids) # Include attention_mask if your encoder uses it
87
+ x = x.mean(dim=1)
88
+ logits = self.fc(x)
89
+ return logits
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:85bb9940a04bbbafad41f16bbee6f6fa59bd8935c8611edcbdd6790e5afed133
3
+ size 54366880