1.1
This commit is contained in:
commit
be9a457cd3
137314
dev-0/expected.tsv
Normal file
137314
dev-0/expected.tsv
Normal file
File diff suppressed because it is too large
Load Diff
137314
dev-0/in.tsv
Normal file
137314
dev-0/in.tsv
Normal file
File diff suppressed because it is too large
Load Diff
137314
dev-0/meta.tsv
Normal file
137314
dev-0/meta.tsv
Normal file
File diff suppressed because it is too large
Load Diff
0
dev-0/out.tsv
Normal file
0
dev-0/out.tsv
Normal file
|
156606
dev-1/expected.tsv
Normal file
156606
dev-1/expected.tsv
Normal file
File diff suppressed because it is too large
Load Diff
156606
dev-1/in.tsv
Normal file
156606
dev-1/in.tsv
Normal file
File diff suppressed because it is too large
Load Diff
156606
dev-1/meta.tsv
Normal file
156606
dev-1/meta.tsv
Normal file
File diff suppressed because it is too large
Load Diff
79
main.py
Normal file
79
main.py
Normal file
@ -0,0 +1,79 @@
|
||||
import torch
|
||||
import numpy as np
|
||||
import torch.nn as nn
|
||||
import torch.optim as optim
|
||||
from torch.autograd import Variable
|
||||
from torch.nn import functional as F
|
||||
import itertools as itertools
|
||||
|
||||
data = []
|
||||
data_out = []
|
||||
input_dim = 2
|
||||
epochs = 200
|
||||
label_to_ix = {0: 0, 1: 1}
|
||||
|
||||
|
||||
for sent in open('train/in.tsv', 'r').readlines()[0:1000]:
|
||||
data.append(sent.split())
|
||||
for sent in open('train/expected.tsv', 'r').readlines()[0:1000]:
|
||||
data_out.append(int(sent))
|
||||
|
||||
word_to_ix = {}
|
||||
for x in data:
|
||||
for y in x:
|
||||
if y not in word_to_ix:
|
||||
word_to_ix[y] = len(word_to_ix)
|
||||
|
||||
NUM_LABELS = 2
|
||||
output_dim = len(word_to_ix)
|
||||
|
||||
class LogisticRegression(torch.nn.Module):
|
||||
def __init__(self, NUM_LABELS, output_dim):
|
||||
super(LogisticRegression, self).__init__()
|
||||
self.linear = torch.nn.Linear(output_dim, NUM_LABELS)
|
||||
def forward(self, x):
|
||||
return F.log_softmax(self.linear(x), dim=1)
|
||||
|
||||
model = LogisticRegression(NUM_LABELS, output_dim)
|
||||
loss_function = nn.NLLLoss()
|
||||
optimizer = optim.SGD(model.parameters(), lr=0.1)
|
||||
|
||||
def make_target(label, label_to_ix):
|
||||
return torch.LongTensor([label_to_ix[label]])
|
||||
|
||||
def make_bow_vector(sentence, word_to_ix):
|
||||
vec = torch.zeros(len(word_to_ix))
|
||||
for word in sentence:
|
||||
# if word in word_to_ix:
|
||||
vec[word_to_ix[word]] += 1
|
||||
return vec.view(1, -1)
|
||||
|
||||
for epoch in range(int(epochs)):
|
||||
for instance, label in itertools.zip_longest(data, data_out):
|
||||
bow_vec = make_bow_vector(instance, word_to_ix)
|
||||
target = make_target(label, {0: 0, 1: 1})
|
||||
# target = torch.LongTensor([label])
|
||||
model.zero_grad()
|
||||
log_probs = model(bow_vec)
|
||||
loss = loss_function(log_probs, target)
|
||||
loss.backward()
|
||||
optimizer.step()
|
||||
|
||||
|
||||
inputf = open('test-A/in.tsv', 'r')
|
||||
outputf = open('test-A/out.tsv', 'w')
|
||||
data = []
|
||||
|
||||
|
||||
with torch.no_grad():
|
||||
for line in inputf.readlines():
|
||||
bow_vector = make_bow_vector(x, word_to_ix)
|
||||
log_probs = model(bow_vector)
|
||||
if log_probs[0][0]> log_probs[0][1]:
|
||||
outputf.write("0\n")
|
||||
else:
|
||||
outputf.write("1\n")
|
||||
|
||||
|
||||
|
||||
|
134618
test-A/out.tsv
Normal file
134618
test-A/out.tsv
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user