Adding whats important for now

This commit is contained in:
SzamanFL 2020-12-13 00:12:06 +01:00
commit 1858d47a3f
8 changed files with 172 additions and 0 deletions

BIN
src/.predict.py.swp Normal file

Binary file not shown.

BIN
src/.train.py.swp Normal file

Binary file not shown.

10
src/Network.py Normal file
View File

@ -0,0 +1,10 @@
import torch
class Network(torch.nn.Module):
def __init__(self, input_size):
super(Network, self).__init__()
self.regression = torch.nn.Linear(input_size, 1)
def forward(self, x):
y_pred = torch.sigmoid(self.regression(x))
return y_pred

Binary file not shown.

10
src/exp.tsv Normal file
View File

@ -0,0 +1,10 @@
1
0
0
0
0
0
1
0
0
1
1 1
2 0
3 0
4 0
5 0
6 0
7 1
8 0
9 0
10 1

10
src/in.tsv Normal file
View File

@ -0,0 +1,10 @@
Najbardziej ktretyński pomysł, o jakim słyszałem. Tym japończykom się na mózg ta technologia rzuciła. Nie wiem, czy mają za dużo kasy, czy są po prostu głupi.
Byłeś wszystkim co kiedykolwiek miałem.
             staniku . hahaha przez miasto tak wracałem dobrze że Bartek mi spodenki porzyczył bo tak to by była masakra  . 
A ja dokladnie pamietam swoja pierwsza randke:)....nie zebymi sie nie podobalo tylko e osoba towarzyszaca średnio przypadała mi do gustu:)...ale umowilem sie z nim...bo bylem zakochany w innym i potrzebowalem lekarstwa:):P Wiem ze to moze bylo glupie i eg
zazwyczaj używanych do oświetlania wnętrz i wystawiłem je na najwyższy
Do yoku i nie tylko ;)Wyczytałem w jednym z postów, że jednym z objawów cytomegalii sąpowiększone węzły chłonne, gardło podobne do anginy. Ja w ciąguostatnich 2 tyg przeszedłem coś takiego już 2 razy i nie ukrywam, żesie martwie. Do tej pory tłumaczyłem sobie, że te moje wyniki mogąbyć podwyższone ze względu na ciąże, a teraz zaczynam się martwić.Czy to może mieć jakieś złe skutki dla dziecka .....?Nadmienie, że jestem obecnie w 17/18 tc.
Gorąco polecam ... Świetny film , w tle słucham jeszcze końcowej muzyki , mógłbym tu się rozpisywać ale to jeden z tych filmów do którego będziemy wracać co jakiś czas
a to Wy jakoś strasznie szybko. Ja to wszystko będe miał chyba dopiero pod koniec stycznia.
jestem zainteresowany stałą współpraca przy prasowaniu koszul, mieszkam na piątkowie więc żabi skok do odbioru. Proszę o kontakt mailowy wera123@o2.pl lub 661-573-524
bym to załatwił w sekund dziewięć i 3/4. Ale zimno było a że kurteczkę narciarską mam z jakiegoś techcośtam 15 000 co daje ciepełko i ogólny komforcik, więc zamiast w płaszczyku poszedłem ubrany jak pracownik pobliskiego Sainsbury.
1 Najbardziej ktretyński pomysł, o jakim słyszałem. Tym japończykom się na mózg ta technologia rzuciła. Nie wiem, czy mają za dużo kasy, czy są po prostu głupi.
2 Byłeś wszystkim co kiedykolwiek miałem.
3              staniku . hahaha przez miasto tak wracałem dobrze że Bartek mi spodenki porzyczył bo tak to by była masakra  . 
4 A ja dokladnie pamietam swoja pierwsza randke:)....nie zebymi sie nie podobalo tylko e osoba towarzyszaca średnio przypadała mi do gustu:)...ale umowilem sie z nim...bo bylem zakochany w innym i potrzebowalem lekarstwa:):P Wiem ze to moze bylo glupie i eg
5 zazwyczaj używanych do oświetlania wnętrz i wystawiłem je na najwyższy
6 Do yoku i nie tylko ;)Wyczytałem w jednym z postów, że jednym z objawów cytomegalii sąpowiększone węzły chłonne, gardło podobne do anginy. Ja w ciąguostatnich 2 tyg przeszedłem coś takiego już 2 razy i nie ukrywam, żesie martwie. Do tej pory tłumaczyłem sobie, że te moje wyniki mogąbyć podwyższone ze względu na ciąże, a teraz zaczynam się martwić.Czy to może mieć jakieś złe skutki dla dziecka .....?Nadmienie, że jestem obecnie w 17/18 tc.
7 Gorąco polecam ... Świetny film , w tle słucham jeszcze końcowej muzyki , mógłbym tu się rozpisywać ale to jeden z tych filmów do którego będziemy wracać co jakiś czas
8 a to Wy jakoś strasznie szybko. Ja to wszystko będe miał chyba dopiero pod koniec stycznia.
9 jestem zainteresowany stałą współpraca przy prasowaniu koszul, mieszkam na piątkowie więc żabi skok do odbioru. Proszę o kontakt mailowy wera123@o2.pl lub 661-573-524
10 bym to załatwił w sekund dziewięć i 3/4. Ale zimno było a że kurteczkę narciarską mam z jakiegoś techcośtam 15 000 co daje ciepełko i ogólny komforcik, więc zamiast w płaszczyku poszedłem ubrany jak pracownik pobliskiego Sainsbury.

55
src/predict.py Normal file
View File

@ -0,0 +1,55 @@
#!/usr/bin/env python
import re
import sys
import pickle
import torch
from Network import Network
def clear_tokens(text):
text = text.rstrip('\n').lower()
text = re.sub(r'[\.\"\\\/\?\!\,\-\$\%\:\;\~\'\&\*\)\(]+', " ", text)
text = text.replace(u'\xa0', u' ')
text = re.sub(r' +', ' ', text)
return text.strip(' ').split(' ')
def create_one_hot(vocab, text):
one_hot = dict(vocab)
tokens = clear_tokens(text)
for token in tokens:
try:
one_hot[token] += 1
except KeyError:
pass
return [[i] for i in one_hot.values()]
def main():
# in, out, vocab, model
if len(sys.argv) != 5:
print('Not sufficient number of args')
return
with open(sys.argv[3], 'rb') as f:
vocab = pickle.load(f)
input_size = len(vocab)
model = Network(input_size)
model.load_state_dict(torch.load(sys.argv[4]))
#optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
model.eval()
counter = 0
with open(sys.argv[1]) as f, open(sys.argv[2], 'w+') as out:
for line in f:
one_hot = create_one_hot(vocab, line)
one_hot_tensor = torch.tensor(one_hot, dtype=torch.float64).T
y_predicted = model(one_hot_tensor.float())
if y_predicted > 0.5:
out.write('1\n')
elif y_predicted <= 0.5:
out.write('0\n')
if counter % 100 == 0:
print(f"{counter}")
counter +=1
main()

87
src/train.py Normal file
View File

@ -0,0 +1,87 @@
#!/usr/bin/env python
import re
import sys
import pickle
import torch
from Network import Network
def clear_tokens(text):
text = text.rstrip('\n').lower()
text = re.sub(r'[\.\"\\\/\?\!\,\-\$\%\:\;\~\'\&\*\)\(]+', " ", text)
text = text.replace(u'\xa0', u' ')
text = re.sub(r' +', ' ', text)
return text.strip(' ').split(' ')
def create_vocab(texts_and_scores):
vocab = {}
for text in texts_and_scores.keys():
tokens = clear_tokens(text)
for token in tokens:
vocab[token] = 0
return vocab
def create_one_hot(vocab, text):
one_hot = dict(vocab)
tokens = clear_tokens(text)
for token in tokens:
one_hot[token] += 1
return [[i] for i in one_hot.values()]
def main():
if len(sys.argv) == 4 or len(sys.argv) == 3:
pass
else:
print('Not sufficient number of args')
return
texts_and_scores = {}
with open(sys.argv[1], 'r') as file_in, open(sys.argv[2], 'r') as file_exp:
for line_in, line_exp in zip(file_in, file_exp):
texts_and_scores[line_in] = int(line_exp.rstrip('\n'))
print(f"Data read")
if len(sys.argv) == 4:
print(f"Loading vocab from {sys.argv[3]}")
with open(sys.argv[3], 'rb') as f:
vocab = pickle.load(f)
print("Loaded vocab")
else:
print("Creating vocab")
vocab = create_vocab(texts_and_scores)
print("Vocab created")
with open('vocab', 'wb+') as f:
pickle.dump(vocab, f, pickle.HIGHEST_PROTOCOL)
print(f"Vocab created in file: vocab")
input_size = len(vocab)
model = Network(input_size)
lr = 0.1
optimizer = torch.optim.SGD(model.parameters(), lr=lr)
criterion = torch.nn.BCELoss()
print("Starting training")
model.train()
counter = 0
try:
for text, score in texts_and_scores.items():
one_hot = create_one_hot(vocab, text)
one_hot_tensor = torch.tensor(one_hot, dtype=torch.float64).T
y = torch.tensor([[score]])
optimizer.zero_grad()
y_predicted = model(one_hot_tensor.float())
loss = criterion(y_predicted, y.float())
loss.backward()
optimizer.step()
if counter % 50 == 0:
print(f"{counter} : {loss}")
if counter % 100 == 0:
print(f"Saving checkpoint model-{counter}-{lr}.ckpt")
torch.save(model.state_dict(), f"model-{counter}-{lr}.ckpt")
counter += 1
except KeyboardInterrupt:
torch.save(model.state_dict(), f"model-interrupted.ckpt")
torch.save(model.state_dict(), f"model-final.ckpt")
main()