-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdata_theano.py
45 lines (33 loc) · 1.57 KB
/
data_theano.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from numpy import array, loadtxt
import math
import numpy
def quantize(x):
if (x >= 0).all():
y = array([math.floor(d) if d-int(d) < 0.5 else math.ceil(d) for d in x]).astype("int")
else:
y = array([d if d > 0 else 0 for d in x]).astype("int")
return y
def load_my_data(train_x_path, train_y_path, test_x_path, test_y_path, valid_x_path, valid_y_path, shared = False):
if shared:
train_set_x, train_set_y = shared_dataset((loadtxt(train_x_path), quantize(loadtxt(train_y_path))))
test_set_x, test_set_y = shared_dataset((loadtxt(test_x_path), quantize(loadtxt(test_y_path))))
valid_set_x, valid_set_y = shared_dataset((loadtxt(valid_x_path), quantize(loadtxt(valid_y_path))))
else:
train_set_x = loadtxt(train_x_path)
train_set_y = quantize(loadtxt(train_y_path))
test_set_x = loadtxt(test_x_path)
test_set_y = quantize(loadtxt(test_y_path))
valid_set_x = loadtxt(valid_x_path)
valid_set_y = quantize(loadtxt(valid_y_path))
rval = [(train_set_x, train_set_y), (valid_set_x, valid_set_y),
(test_set_x, test_set_y)]
return rval
def shared_dataset(data_xy, borrow=True):
import theano
from theano import tensor as T
data_x, data_y = data_xy
shared_x = theano.shared(numpy.asarray(data_x, dtype=theano.config.floatX),
borrow=borrow)
shared_y = theano.shared(numpy.asarray(data_y, dtype=theano.config.floatX),
borrow=borrow)
return shared_x, T.cast(shared_y, "int32")