Adding whats important for now
This commit is contained in:
commit
1858d47a3f
BIN
src/.predict.py.swp
Normal file
BIN
src/.predict.py.swp
Normal file
Binary file not shown.
BIN
src/.train.py.swp
Normal file
BIN
src/.train.py.swp
Normal file
Binary file not shown.
10
src/Network.py
Normal file
10
src/Network.py
Normal 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
|
BIN
src/__pycache__/Network.cpython-38.pyc
Normal file
BIN
src/__pycache__/Network.cpython-38.pyc
Normal file
Binary file not shown.
10
src/exp.tsv
Normal file
10
src/exp.tsv
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
1
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
1
|
||||||
|
0
|
||||||
|
0
|
||||||
|
1
|
|
10
src/in.tsv
Normal file
10
src/in.tsv
Normal 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.
|
|
55
src/predict.py
Normal file
55
src/predict.py
Normal 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
87
src/train.py
Normal 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()
|
Loading…
Reference in New Issue
Block a user