Arkadaşlar ChatGPT'ye gene kod yazdırdım fakat hatayı kaç kere sordum her seferinde bir şeyler ekletti fakat hata düzelmedi.
Vocabs.txt
Nasıl düzeltebilirim?Şimdiden çok teşekkürler.
@bitwise ve @Vavien. Sizler bayağı anlıyorsunuz hocalarım yardımcı olsanız olurm mu?
Python:
import torch
import torch.nn as nn
import torch.optim as optim
import random
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
vocab_size = 10000
responses = ["iyiyim sen nasılsın?", "teşekkürler", "harika", "merhaba!"]
vocab = []
with open("vocabs.txt", "r", encoding="utf-8") as f:
for line in f:
vocab.append(line.strip())
# Define word to index and index to word mappings
word_to_index = {word: index for index, word in enumerate(vocab)}
index_to_word = {index: word for index, word in enumerate(vocab + responses)}
# Prepare training data
train_data = [("Merhaba nasılsın?", "İyiyim teşekkür ederim, sen nasılsın?"), ("Bugün hava nasıl?", "Hava güzel görünüyor, senin için nasıl?"), ("Sen ne iş yapıyorsun?", "Ben bir yapay zeka modeliyim, insanlarla sohbet etmeyi öğrendim."), ("En sevdiğin yemek nedir?", "Ben bir yapay zeka modeliyim, yemek yeme gibi bir ihtiyacım yok."), ("En sevdiğin film nedir?", "Ben bir yapay zeka modeliyim, film izleme gibi bir ihtiyacım yok."), ("Hangi şehirdesin?", "Ben bir yapay zeka modeliyim, fiziksel bir yerde bulunmuyorum.")]
train_data = [(question.split(), responses.index(answer)) for question, answer in train_data]
train_data = [(torch.tensor([word_to_index[word] for word in question]), answer) for question, answer in train_data]
class ChatBot(nn.Module):
def __init__(self, input_size, hidden_size, num_layers, num_classes):
super(ChatBot, self).__init__()
self.hidden_size = hidden_size
self.num_layers = num_layers
self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True)
self.fc = nn.Linear(hidden_size, num_classes)
def forward(self, x):
h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(device)
c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(device)
out, _ = self.lstm(x, (h0, c0))
out = self.fc(out[:, -1, :])
return out
model = ChatBot(input_size=vocab_size, hidden_size=512, num_layers=2, num_classes=len(responses))
model.to(device)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
for epoch in range(100):
for i, (questions, answers) in enumerate(train_data):
questions = questions.to(device)
answers = answers.to(device)
optimizer.zero_grad()
outputs = model(questions)
loss = criterion(outputs, answers)
loss.backward()
optimizer.step()
if (epoch+1) % 10 == 0:
print ('Epoch [{}/100], Loss: {:.4f}'.format(epoch+1, loss.item()))
torch.save(model.state_dict(), 'model.ckpt')
def chat(model, sentence, word_to_index, index_to_word):
model.eval()
sentence = sentence.lower()
sentence = sentence.split()
inputs = [word_to_index[i] for i in sentence]
inputs = torch.tensor(inputs).unsqueeze(1).to(device)
outputs = model(inputs)
predicted = outputs.argmax(1).item()
return index_to_word[predicted]
while True:
user_input = input("User: ")
response = chat(model, user_input,word_to_index, index_to_word)
print("ChatBot:", response)
File "<string>", line 20, in <module>
File "<string>", line 20, in <listcomp>
ValueError: 'İyiyim teşekkür ederim, sen nasılsın?' is not in list
Vocabs.txt
Kod:
Merhaba
İyiyim
teşekkür
ederim
sen
bugün hava
nasıl
güzel
görünüyor
için
ne
iş
yapıyorsun
bir
yapay zeka
modeliyim
insanlarla
sohbet
etmeyi
öğrendim
en
sevdiğin
yemek
film
hangi
şehirdesin
fiziksel
yerde
bulunmuyorum
Merhaba
Nasılsın
Bugün
Hava
Sen
Ne
İş
Yapıyorsun
En
Sevdiğin
Yemek
Film
Nedir
Hangi
Şehirdesin
@bitwise ve @Vavien. Sizler bayağı anlıyorsunuz hocalarım yardımcı olsanız olurm mu?
Son düzenleme: