Добрый всем день!)Хочу привести примеры как я использовал библиотеку машинного обучения-PyBrain, основы:
| Python | 1
2
3
4
5
6
7
8
9
| #1)
from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure import TanhLayer, SoftmaxLayer
net = buildNetwork(2, 3, 2, hiddenclass=TanhLayer, outclass=SoftmaxLayer)
"""
Сеть рандомна инициализирована, проверим ее
"""
print('act', net.activate((2, 3)))
# act [0.68342348 0.31657652] |
|
| Python | 1
2
3
4
5
6
7
8
9
10
11
12
| #2)
from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure import TanhLayer, SoftmaxLayer
"""
Зададим везде биасы
"""
net = buildNetwork(2, 3, 2, hiddenclass=TanhLayer, outclass=SoftmaxLayer, bias=True)
"""
Сеть рандомна инициализирована, проверим ее
"""
print('act', net.activate((2, 3)))
# act [0.79530177 0.20469823] |
|
| Python | 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
| #3)
from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure import SigmoidLayer
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.tools.customxml.networkwriter import NetworkWriter
from pybrain.tools.customxml.networkreader import NetworkReader
"""
Сохраним сеть и веса и прочитаем ее
"""
#тут создаем структуру для обучения и набор данных для обучения - 2 измерение train вектора, 1 - измерение target вектора
ds = SupervisedDataSet(2, 1)
xorModel = [
[(0,0), (0,)],
[(0,1), (1,)],
[(1,0), (1,)],
[(1,1), (0,)],
]
for input, target in xorModel:
ds.addSample(input, target)
#создаем нейросеть с 2 входами, 3 скрытых слоя и 1 выход
net = buildNetwork(2, 3, 1, bias=True, hiddenclass=SigmoidLayer)
trainer=BackpropTrainer(net, ds)
for epoch in range(4000):
trainer.train()
NetworkWriter.writeToFile(net, 'wei.xml')
net = NetworkReader.readFrom('wei.xml')
for x, _ in xorModel:
print("%s, act: %f"%(x, net.activate(x)))
"""
(0, 0), act: 0.089356
(0, 1), act: 0.877363
(1, 0), act: 0.906970
(1, 1), act: 0.119660
""" |
|
| Python | 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
| #4)
from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure import SigmoidLayer
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.tools.customxml.networkwriter import NetworkWriter
from pybrain.tools.customxml.networkreader import NetworkReader
"""
Сохраним сеть и веса и прочитаем ее
"""
#тут создаем структуру для обучения и набор данных для обучения - 2 измерение train вектора, 1 - измерение target вектора
ds = SupervisedDataSet(2, 1)
xorModel = [
[(0,0), (0,)],
[(0,1), (1,)],
[(1,0), (1,)],
[(1,1), (0,)],
]
for input, target in xorModel:
ds.addSample(input, target)
#создаем нейросеть с 2 входами, 3 скрытых слоя и 1 выход
net = buildNetwork(2, 3, 1, bias=True, hiddenclass=SigmoidLayer)
trainer=BackpropTrainer(net, ds)
"""
Здесь неправильный вывод, должна проходить кросс-валидацию и завершаться
при ее успехе, может набор не разделен
"""
print('doc meth:', trainer.trainUntilConvergence.__doc__)
trainer.trainUntilConvergence(
# maxEpochs=3000
)
NetworkWriter.writeToFile(net, 'wei.xml')
net = NetworkReader.readFrom('wei.xml')
for x, _ in xorModel:
print("%s, act: %f"%(x, net.activate(x)))
"""
doc meth: Train the module on the dataset until it converges.
Return the module with the parameters that gave the minimal validation
error.
If no dataset is given, the dataset passed during Trainer
initialization is used. validationProportion is the ratio of the dataset
that is used for the validation dataset.
If the training and validation data is already set, the splitPropotion is ignored
If maxEpochs is given, at most that many epochs
are trained. Each time validation error hits a minimum, try for
continueEpochs epochs to find a better one.
(0, 0), act: 0.939055
(0, 1), act: 0.553175
(1, 0), act: -0.122791
(1, 1), act: -0.360873
"" |
|
|