import torch
import torch.nn as nn
import torch.optim as optim
text = "GpuGeek is a platform for AI developers."
char_set = list(set(text))
char_to_idx = {char: idx for idx, char inenumerate(char_set)}
idx_to_char = {idx: char for idx, char inenumerate(char_set)}
data = [char_to_idx[char] for char in text]
input_data = torch.LongTensor(data[:-1])
target_data = torch.LongTensor(data[1:])
classRNN(nn.Module):
def__init__(self, input_size, hidden_size, output_size):
super(RNN, self).__init__()
self.hidden_size = hidden_size
self.embedding = nn.Embedding(input_size, hidden_size)
self.gru = nn.GRU(hidden_size, hidden_size)
self.fc = nn.Linear(hidden_size, output_size)
defforward(self, input, hidden):
embedded = self.embedding(input).view(1, 1, -1)
output, hidden = self.gru(embedded, hidden)
output = self.fc(output.view(1, -1))
return output, hidden
definit_hidden(self):
return torch.zeros(1, 1, self.hidden_size)
n_chars = len(char_set)
rnn = RNN(n_chars, 128, n_chars)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(rnn.parameters())
for epoch inrange(100):
hidden = rnn.init_hidden()
optimizer.zero_grad()
loss = 0for i inrange(len(input_data)):
input_char = input_data[i].unsqueeze(0)
target_char = target_data[i]
output, hidden = rnn(input_char, hidden)
loss += criterion(output, target_char.unsqueeze(0))
loss.backward()
optimizer.step()
if epoch % 10 == 0:
print(f"Epoch: {epoch}, Loss: {loss.item()}")
hidden = rnn.init_hidden()
input_char = input_data[0].unsqueeze(0)
output_str = idx_to_char[input_char.item()]
for _ inrange(50):
output, hidden = rnn(input_char, hidden)
topv, topi = output.topk(1)
input_char = topi.squeeze().detach()
output_str += idx_to_char[input_char.item()]
print(output_str)
案例三:Hugging Face 情感分析
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
texts = [
"GpuGeek platform is great!",
"I have some issues with the service."
]
results = classifier(texts)
for text, result inzip(texts, results):
print(f"Text: {text}")
print(f"Label: {result['label']}, Score: {result['score']:.4f}\n")