Dựa trên PyBrain's tutorials tôi quản lý để gõ cùng đoạn mã sau:Cách tạo mạng nơron 3 lớp đơn giản và dạy nó bằng cách sử dụng học được giám sát?
#!/usr/bin/env python2
# coding: utf-8
from pybrain.structure import FeedForwardNetwork, LinearLayer, SigmoidLayer, FullConnection
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
n = FeedForwardNetwork()
inLayer = LinearLayer(2)
hiddenLayer = SigmoidLayer(3)
outLayer = LinearLayer(1)
n.addInputModule(inLayer)
n.addModule(hiddenLayer)
n.addOutputModule(outLayer)
in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)
n.addConnection(in_to_hidden)
n.addConnection(hidden_to_out)
n.sortModules()
ds = SupervisedDataSet(2, 1)
ds.addSample((0, 0), (0,))
ds.addSample((0, 1), (1,))
ds.addSample((1, 0), (1,))
ds.addSample((1, 1), (0,))
trainer = BackpropTrainer(n, ds)
# trainer.train()
trainer.trainUntilConvergence()
print n.activate([0, 0])[0]
print n.activate([0, 1])[0]
print n.activate([1, 0])[0]
print n.activate([1, 1])[0]
Đó là nghĩa vụ phải học chức năng XOR, nhưng kết quả dường như khá ngẫu nhiên:
0,208884929522
0,168926515771
0.459452834043
0,424209192223
hoặc
0,84956138664
0,888512762786
0,564964077401
0,611111147862
Có phương pháp nào để đào tạo mạng cho đến khi sai số trung bình thấp hơn (hoặc bằng) so với yêu cầu hoặc giới hạn số lượng kỷ nguyên đã đạt được không? – Luke
@Luke PyBrain của tài liệu thành thật nói rằng "Tài liệu này chỉ bao gồm một trích đoạn chủ quan của các phương pháp có sẵn". Vì vậy, bạn sẽ cần phải xem xét việc thực hiện phân phối PyBrain cụ thể của bạn. Nhưng ngay cả khi không có, nó rất dễ dàng để thực hiện vòng lặp như vậy của chính mình. – BartoszKP