import torch
from torch import nn
class ChatTransformer(nn.Module):
def __init__(self, vocab_size, max_len, embedding_dim, hidden_dim, num_heads, output_dim, num_layers, dropout):
super(ChatTransformer, self).__init__()
self.embedding_dim = embedding_dim
self.hidden_dim = hidden_dim
self.num_heads = num_heads
self.output_dim = output_dim
self.num_layers = num_layers
网页链接 = nn.Embedding(vocab_size, embedding_dim)
网页链接 = nn.TransformerEncoder(
self.embedding,
nn.NLLLoss(),
nn.Dropout(dropout),
nn.LayerNorm(embedding_dim),
nn.GELU(),
nn.Linear(hidden_dim * num_layers, hidden_dim),
nn.Linear(hidden_dim, output_dim),
)
网页链接 = nn.TransformerDecoder(
self.encoder,
nn.NLLLoss(),
nn.Dropout(dropout),
nn.Linear(hidden_dim * num_layers, output_dim),
)
def forward(self, text):
embedded = self.embedding(text)
encoded = self.encoder(embedded)
decoded = self.decoder(encoded)
return decoded
class ComplexAI(ChatWindow):
def __init__(self, context, chat_window):
super(ComplexAI, self).__init__(context, chat_window)
self.use_albert = True
网页链接 = ChatTransformer(vocab_size=32000, max_len=1024, embedding_dim=512, hidden_dim=768, num_heads=12, output_dim=512, num_layers=6, dropout=0.1)
def respond(self, utterance):
if self.use_albert:
output = self.model(utterance)
return output.transpose(0, 1).squeeze()
else:
return self.chat_window.respond(utterance)
if __name__ == "__main__":
context = "This is a complex AI that uses a Transformer to process chat conversations."
chat_window = ComplexAI(context, None)
chat_window.leave_task("mode")
from torch import nn
class ChatTransformer(nn.Module):
def __init__(self, vocab_size, max_len, embedding_dim, hidden_dim, num_heads, output_dim, num_layers, dropout):
super(ChatTransformer, self).__init__()
self.embedding_dim = embedding_dim
self.hidden_dim = hidden_dim
self.num_heads = num_heads
self.output_dim = output_dim
self.num_layers = num_layers
网页链接 = nn.Embedding(vocab_size, embedding_dim)
网页链接 = nn.TransformerEncoder(
self.embedding,
nn.NLLLoss(),
nn.Dropout(dropout),
nn.LayerNorm(embedding_dim),
nn.GELU(),
nn.Linear(hidden_dim * num_layers, hidden_dim),
nn.Linear(hidden_dim, output_dim),
)
网页链接 = nn.TransformerDecoder(
self.encoder,
nn.NLLLoss(),
nn.Dropout(dropout),
nn.Linear(hidden_dim * num_layers, output_dim),
)
def forward(self, text):
embedded = self.embedding(text)
encoded = self.encoder(embedded)
decoded = self.decoder(encoded)
return decoded
class ComplexAI(ChatWindow):
def __init__(self, context, chat_window):
super(ComplexAI, self).__init__(context, chat_window)
self.use_albert = True
网页链接 = ChatTransformer(vocab_size=32000, max_len=1024, embedding_dim=512, hidden_dim=768, num_heads=12, output_dim=512, num_layers=6, dropout=0.1)
def respond(self, utterance):
if self.use_albert:
output = self.model(utterance)
return output.transpose(0, 1).squeeze()
else:
return self.chat_window.respond(utterance)
if __name__ == "__main__":
context = "This is a complex AI that uses a Transformer to process chat conversations."
chat_window = ComplexAI(context, None)
chat_window.leave_task("mode")
