-
Notifications
You must be signed in to change notification settings - Fork 850
/
_multilayer.py
69 lines (57 loc) · 2.19 KB
/
_multilayer.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# Sebastian Raschka 2014-2023
# mlxtend Machine Learning Library Extensions
#
# Base Clusteer (Clutering Parent Class)
# Author: Sebastian Raschka <sebastianraschka.com>
#
# License: BSD 3 clause
import numpy as np
class _MultiLayer(object):
def __init__(self):
pass
def _layermapping(self, n_features, n_classes, hidden_layers):
"""Creates a dictionaries of layer dimensions for weights and biases.
For example, given
`n_features=10`, `n_classes=10`, and `hidden_layers=[8, 7, 6]`:
biases =
{1: [[8], 'n_hidden_1'],
2: [[7], 'n_hidden_2'],
3: [[6], 'n_hidden_3'],
'out': [[10], 'n_classes']
}
weights =
{1: [[10, 8], 'n_features, n_hidden_1'],
2: [[8, 7], 'n_hidden_1, n_hidden_2'],
3: [[7, 6], 'n_hidden_2, n_hidden_3'],
'out': [[6, 10], 'n_hidden_3, n_classes']
}
"""
weights = {
"1": [[n_features, hidden_layers[0]], "n_features, n_hidden_1"],
"out": [
[hidden_layers[-1], n_classes],
"n_hidden_%d, n_classes" % len(hidden_layers),
],
}
biases = {
"1": [[hidden_layers[0]], "n_hidden_1"],
"out": [[n_classes], "n_classes"],
}
if len(hidden_layers) > 1:
for i, h in enumerate(hidden_layers[1:]):
layer = i + 2
weights[str(layer)] = [
[weights[str(layer - 1)][0][1], h],
"n_hidden_%d, n_hidden_%d" % (layer - 1, layer),
]
biases[str(layer)] = [[h], "n_hidden_%d" % layer]
return weights, biases
def _init_params_from_layermapping(self, weight_maps, bias_maps, random_seed=None):
rgen = np.random.RandomState(random_seed)
weights, biases = {}, {}
rgen = np.random.RandomState(random_seed)
weights, biases = {}, {}
for kw, kb in zip(sorted(weight_maps), sorted(bias_maps)):
weights[kw] = rgen.normal(loc=0.0, scale=0.01, size=weight_maps[kw][0])
biases[kb] = np.zeros(shape=bias_maps[kb][0])
return weights, biases