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