Upload 3 files
Browse files- .gitattributes +1 -0
- MicroGenerativeTeks.py +93 -0
- Pretrained.keras +3 -0
- tokenizer.json +0 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
Pretrained.keras filter=lfs diff=lfs merge=lfs -text
|
MicroGenerativeTeks.py
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import tensorflow as tf
|
| 2 |
+
from tensorflow import keras
|
| 3 |
+
|
| 4 |
+
@keras.utils.register_keras_serializable()
|
| 5 |
+
class BlockDecoders (keras.Layer) :
|
| 6 |
+
def __init__ (self,d_model,ffn_dim,num_heads,dropout_rate=0.1,**kwargs) :
|
| 7 |
+
super(BlockDecoders,self).__init__(**kwargs)
|
| 8 |
+
self.mha = keras.layers.MultiHeadAttention(num_heads=num_heads,key_dim=d_model,dropout=dropout_rate)
|
| 9 |
+
self.normal1 = keras.layers.LayerNormalization(epsilon=1e-6)
|
| 10 |
+
self.ffn = keras.Sequential([
|
| 11 |
+
keras.layers.Dense(ffn_dim,activation=keras.activations.gelu),
|
| 12 |
+
keras.layers.Dense(d_model)
|
| 13 |
+
])
|
| 14 |
+
self.dropout = keras.layers.Dropout(rate=dropout_rate)
|
| 15 |
+
self.normal2 = keras.layers.LayerNormalization(epsilon=1e-6)
|
| 16 |
+
self.d_model = d_model
|
| 17 |
+
self.ffn_dim = ffn_dim
|
| 18 |
+
self.num_head = num_heads
|
| 19 |
+
self.dropout_rate = dropout_rate
|
| 20 |
+
|
| 21 |
+
def call(self,x,training=False) :
|
| 22 |
+
attn = self.mha(x,x,x,training=training,use_causal_mask=True)
|
| 23 |
+
attn = self.normal1(attn + x)
|
| 24 |
+
|
| 25 |
+
ffn = self.ffn(attn)
|
| 26 |
+
ffn = self.dropout(ffn)
|
| 27 |
+
ffn = self.normal2(ffn + attn)
|
| 28 |
+
return ffn
|
| 29 |
+
|
| 30 |
+
def get_config(self) :
|
| 31 |
+
config = super(BlockDecoders,self).get_config()
|
| 32 |
+
config.update ({
|
| 33 |
+
'd_model' : self.d_model,
|
| 34 |
+
'ffn_dim' : self.ffn_dim,
|
| 35 |
+
'num_head' : self.num_head,
|
| 36 |
+
'dropout_rate' : self.dropout_rate
|
| 37 |
+
})
|
| 38 |
+
return config
|
| 39 |
+
|
| 40 |
+
@classmethod
|
| 41 |
+
def from_config(cls,config) :
|
| 42 |
+
return cls(**config)
|
| 43 |
+
|
| 44 |
+
@keras.utils.register_keras_serializable()
|
| 45 |
+
class Micro_Gen_Teks (keras.Model) :
|
| 46 |
+
def __init__ (self,vocab_size,d_model,ffn_dim,num_heads,num_blocks,maxpos,dropout_rate=0.1,**kwargs) :
|
| 47 |
+
super(Micro_Gen_Teks,self).__init__(**kwargs)
|
| 48 |
+
self.Embedding = keras.layers.Embedding(vocab_size,d_model)
|
| 49 |
+
self.pos_embedding = keras.layers.Embedding(maxpos,d_model)
|
| 50 |
+
self.BlockDecoders = [BlockDecoders(
|
| 51 |
+
d_model=d_model,ffn_dim=ffn_dim,num_heads=num_heads,dropout_rate=dropout_rate
|
| 52 |
+
) for _ in range(num_blocks)]
|
| 53 |
+
self.final_layer = keras.layers.Dense(vocab_size)
|
| 54 |
+
|
| 55 |
+
self.vocab_size = vocab_size
|
| 56 |
+
self.d_model = d_model
|
| 57 |
+
self.ffn_dim = ffn_dim
|
| 58 |
+
self.num_heads = num_heads
|
| 59 |
+
self.num_blocks = num_blocks
|
| 60 |
+
self.dropout_rate = dropout_rate
|
| 61 |
+
self.maxpos = maxpos
|
| 62 |
+
|
| 63 |
+
def call(self,x,training = True) :
|
| 64 |
+
batch, seq = tf.shape(x)[0], tf.shape(x)[1]
|
| 65 |
+
pos = tf.range(start=0,limit=seq,delta=1)
|
| 66 |
+
pos = self.pos_embedding(pos)
|
| 67 |
+
pos = tf.expand_dims(pos,axis=0)
|
| 68 |
+
x = self.Embedding(x)
|
| 69 |
+
x *= tf.sqrt(tf.cast(self.d_model,dtype=tf.float16))
|
| 70 |
+
x = x + pos
|
| 71 |
+
for block in self.BlockDecoders :
|
| 72 |
+
x = block(x,training=training)
|
| 73 |
+
|
| 74 |
+
x = self.final_layer(x)
|
| 75 |
+
return x
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
def get_config(self) :
|
| 79 |
+
config = super(Micro_Gen_Teks,self).get_config()
|
| 80 |
+
config.update({
|
| 81 |
+
'vocab_size' : self.vocab_size,
|
| 82 |
+
'd_model' : self.d_model,
|
| 83 |
+
'ffn_dim' : self.ffn_dim,
|
| 84 |
+
'num_heads' : self.num_heads,
|
| 85 |
+
'num_blocks' : self.num_blocks,
|
| 86 |
+
'dropout_rate' : self.dropout_rate,
|
| 87 |
+
'maxpos' : self.maxpos
|
| 88 |
+
})
|
| 89 |
+
return config
|
| 90 |
+
|
| 91 |
+
@classmethod
|
| 92 |
+
def from_config(cls,config) :
|
| 93 |
+
return cls(**config)
|
Pretrained.keras
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f834cfad0397399eaa2321b6b4c69ae217a9930ab4c8b9b18d818b37023cec99
|
| 3 |
+
size 52627906
|
tokenizer.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|