marcovise commited on
Commit
6d6fc00
·
verified ·
1 Parent(s): 801fb67

Upload modeling_te3s_head.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. modeling_te3s_head.py +110 -0
modeling_te3s_head.py CHANGED
@@ -5,6 +5,116 @@ import torch.nn as nn
5
  from transformers import PreTrainedModel, PretrainedConfig
6
 
7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  class TextEmbedding3SmallSentimentHead(PreTrainedModel):
9
  """Lightweight sentiment head for 1536-d OpenAI embeddings.
10
 
 
5
  from transformers import PreTrainedModel, PretrainedConfig
6
 
7
 
8
+ class TextEmbedding3SmallSentimentHeadConfig(PretrainedConfig):
9
+ model_type = "sentiment-head"
10
+
11
+ def __init__(
12
+ self,
13
+ input_dim: int = 1536,
14
+ hidden_dim: int = 512,
15
+ dropout: float = 0.2,
16
+ num_labels: int = 3,
17
+ **kwargs,
18
+ ) -> None:
19
+ super().__init__(**kwargs)
20
+ self.input_dim = int(input_dim)
21
+ self.hidden_dim = int(hidden_dim)
22
+ self.dropout = float(dropout)
23
+ self.num_labels = int(num_labels)
24
+
25
+
26
+ class TextEmbedding3SmallSentimentHead(PreTrainedModel):
27
+ config_class = TextEmbedding3SmallSentimentHeadConfig
28
+
29
+ def __init__(self, config: TextEmbedding3SmallSentimentHeadConfig) -> None:
30
+ super().__init__(config)
31
+
32
+ if config.hidden_dim and config.hidden_dim > 0:
33
+ self.net = nn.Sequential(
34
+ nn.Linear(config.input_dim, config.hidden_dim),
35
+ nn.ReLU(),
36
+ nn.Dropout(p=config.dropout),
37
+ nn.Linear(config.hidden_dim, config.num_labels),
38
+ )
39
+ else:
40
+ self.net = nn.Linear(config.input_dim, config.num_labels)
41
+
42
+ self.post_init()
43
+
44
+ def forward(
45
+ self,
46
+ inputs_embeds: torch.FloatTensor,
47
+ labels: torch.LongTensor | None = None,
48
+ **_: dict,
49
+ ):
50
+ logits = self.net(inputs_embeds)
51
+ loss = None
52
+ if labels is not None:
53
+ loss = nn.CrossEntropyLoss()(logits, labels)
54
+ return {"logits": logits, "loss": loss}
55
+
56
+ from __future__ import annotations
57
+
58
+ import torch
59
+ import torch.nn as nn
60
+ from transformers import PreTrainedModel, PretrainedConfig
61
+
62
+
63
+ class TextEmbedding3SmallSentimentHeadConfig(PretrainedConfig):
64
+ model_type = "sentiment-head"
65
+
66
+ def __init__(
67
+ self,
68
+ input_dim: int = 1536,
69
+ hidden_dim: int = 512,
70
+ dropout: float = 0.2,
71
+ num_labels: int = 3,
72
+ **kwargs,
73
+ ) -> None:
74
+ super().__init__(**kwargs)
75
+ self.input_dim = int(input_dim)
76
+ self.hidden_dim = int(hidden_dim)
77
+ self.dropout = float(dropout)
78
+ self.num_labels = int(num_labels)
79
+
80
+
81
+ class TextEmbedding3SmallSentimentHead(PreTrainedModel):
82
+ config_class = TextEmbedding3SmallSentimentHeadConfig
83
+
84
+ def __init__(self, config: TextEmbedding3SmallSentimentHeadConfig) -> None:
85
+ super().__init__(config)
86
+
87
+ if config.hidden_dim and config.hidden_dim > 0:
88
+ self.net = nn.Sequential(
89
+ nn.Linear(config.input_dim, config.hidden_dim),
90
+ nn.ReLU(),
91
+ nn.Dropout(p=config.dropout),
92
+ nn.Linear(config.hidden_dim, config.num_labels),
93
+ )
94
+ else:
95
+ self.net = nn.Linear(config.input_dim, config.num_labels)
96
+
97
+ self.post_init()
98
+
99
+ def forward(
100
+ self,
101
+ inputs_embeds: torch.FloatTensor,
102
+ labels: torch.LongTensor | None = None,
103
+ **_: dict,
104
+ ):
105
+ logits = self.net(inputs_embeds)
106
+ loss = None
107
+ if labels is not None:
108
+ loss = nn.CrossEntropyLoss()(logits, labels)
109
+ return {"logits": logits, "loss": loss}
110
+
111
+ from __future__ import annotations
112
+
113
+ import torch
114
+ import torch.nn as nn
115
+ from transformers import PreTrainedModel, PretrainedConfig
116
+
117
+
118
  class TextEmbedding3SmallSentimentHead(PreTrainedModel):
119
  """Lightweight sentiment head for 1536-d OpenAI embeddings.
120