-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample_usage.py
More file actions
52 lines (38 loc) · 1.52 KB
/
example_usage.py
File metadata and controls
52 lines (38 loc) · 1.52 KB
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
46
47
48
49
50
51
52
import numpy as np
import numpy_dl as nn
# Generate test set
def generate_disc_set(number_samples):
inputs = np.zeros((number_samples, 2))
targets = np.ones((number_samples, 1))
while abs(targets.mean()-0.5) > 0.01:
inputs = np.random.uniform(-1, 1, (number_samples, 2))
targets = np.expand_dims((np.sqrt(inputs[:, 0] ** 2 + inputs[:, 1] ** 2) < 0.79788456), 1)
print(targets.mean())
mean, std = inputs.mean(0), inputs.std(0)
inputs = (inputs - mean) / std
return inputs, (targets*2)-1
def main():
inputs, targets = generate_disc_set(100000)
split = 0.8
train_input = inputs[:int(split * len(inputs)), :]
train_target = targets[:int(split * len(inputs))]
test_input = inputs[int(split * len(inputs)):, :]
test_target = targets[int(split * len(inputs)):]
model = nn.train_model(model=nn.SimpleNet(),
criterion=nn.BCEwithSoftmaxLoss(),
train_input=train_input,
train_target=train_target,
mini_batch_size=10,
eta=1e-4,
epochs=50,
print_=True)
# Train accuracy
model.eval()
output = model(train_input)
print(f'Train Accuracy: {nn.evaluate_accuracy(train_target, output)}\n')
# Test accuracy
output = model(test_input)
accuracy = nn.evaluate_accuracy(test_target, output)
print(f'Test Accuracy: {accuracy}\n')
if __name__ == "__main__":
main()