76 lines
1.7 KiB
Python
76 lines
1.7 KiB
Python
import torch
|
|
import torch.nn as nn
|
|
import numpy as np
|
|
import pandas as pd
|
|
from torch.autograd import Variable
|
|
|
|
train = 'train/train.tsv'
|
|
in_file = 'test-A/in.tsv'
|
|
out_file = 'test-A/out.tsv'
|
|
learning_rate = 0.00001
|
|
|
|
|
|
class linearRegression(nn.Module):
|
|
def __init__(self, input_dim, output_dim):
|
|
super(linearRegression, self).__init__()
|
|
self.linear = nn.Linear(input_dim, output_dim)
|
|
def forward(self, x):
|
|
out = self.linear(x)
|
|
return out
|
|
|
|
|
|
inputDim = 1
|
|
outputDim = 1
|
|
model = linearRegression(inputDim, outputDim)
|
|
|
|
data = pd.read_csv('train/train.tsv',sep='\t',header=None)
|
|
|
|
y_values = data[0].tolist()
|
|
x_values = data[8].tolist()
|
|
|
|
x_train = np.array(x_values, dtype=np.float32)
|
|
x_train = x_train.reshape(-1, 1)
|
|
y_train = np.array(y_values, dtype=np.float32)
|
|
y_train = y_train.reshape(-1, 1)
|
|
|
|
if torch.cuda.is_available():
|
|
model.cuda()
|
|
|
|
criterion = nn.MSELoss()
|
|
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
|
|
|
|
|
|
|
|
for epoch in range(1000):
|
|
epoch += 1
|
|
|
|
if torch.cuda.is_available():
|
|
inputs = Variable(torch.from_numpy(x_train).cuda())
|
|
labels = Variable(torch.from_numpy(y_train).cuda())
|
|
else:
|
|
inputs = Variable(torch.from_numpy(x_train))
|
|
labels = Variable(torch.from_numpy(y_train))
|
|
|
|
optimizer.zero_grad()
|
|
|
|
outputs = model(inputs)
|
|
|
|
loss = criterion(outputs, labels)
|
|
|
|
loss.backward()
|
|
|
|
optimizer.step()
|
|
|
|
|
|
result = pd.read_csv('test-A/in.tsv',sep='\t',header=None)
|
|
end_x = result[7].tolist()
|
|
end_x = np.array(end_x, dtype=np.float32)
|
|
end_x = end_x.reshape(-1, 1)
|
|
|
|
predictions = model(torch.from_numpy(end_x).requires_grad_()).data.numpy()
|
|
|
|
|
|
output = open('test-A/out.tsv', 'w')
|
|
for p in predictions:
|
|
output.write(str(p[0])+'\n')
|