2012-04-11 22 views
6

Theo tài liệu PyBrain, Building Networks with Modules and Connections, tôi đang xây dựng một mạng lưới thần kinh nối tiếp (ngược lại với việc sử dụng lối tắt buildNetwork). Tôi đang xây dựng một mạng thần kinh 3 lớp (đầu vào, ẩn, đầu ra) đơn giản. Làm cách nào để thêm đúng đơn vị thiên vị?PyBrain: Khi tạo mạng từ mặt đất lên, bạn tạo thiên vị ở đâu và ở đâu?

Tôi đoán tôi xây dựng một mô-đun BiasUnit như trong:

b = BiasUnit(name='bias') 
network.addModule(b) 

Đây có phải là đúng cách? Tôi có phải tạo đối tượng FullConnection không? Nếu vậy, tôi nên kết nối những gì?

+0

Nhiều như tôi yêu python, tôi đã chuyển sang sử dụng C-based [fanntool] (http://code.google.com/p/fanntool/) mà thổi PyBrain ra khỏi nước về hiệu suất . – User

Trả lời

10

PyBrain thực hiện là mã nguồn mở và tôi có mã nguồn nằm trong thư mục Python của mình. Tôi đã mở tệp C: \ Python27 \ Lib \ site-packages \ pybrain \ tools \ shortcuts.py. Bên trong tập tin này, tôi đặt hàm buildNetwork và thấy nó thêm BiasUnit như thế nào. Mã có liên quan ở đây:

... 
n = Network() 
# linear input layer 
n.addInputModule(LinearLayer(layers[0], name='in')) 
# output layer of type 'outclass' 
n.addOutputModule(opt['outclass'](layers[-1], name='out')) 
if opt['bias']: 
    # add bias module and connection to out module, if desired 
    n.addModule(BiasUnit(name='bias')) 
    if opt['outputbias']: 
     n.addConnection(FullConnection(n['bias'], n['out'])) 
# arbitrary number of hidden layers of type 'hiddenclass' 
for i, num in enumerate(layers[1:-1]): 
    layername = 'hidden%i' % i 
    n.addModule(opt['hiddenclass'](num, name=layername)) 
    if opt['bias']: 
     # also connect all the layers with the bias 
     n.addConnection(FullConnection(n['bias'], n[layername])) 
# connections between hidden layers 
... 

Về cơ bản có vẻ như nó tạo ra một BiasUnit duy nhất và kết nối nó với từng lớp ẩn và tùy chọn cho lớp đầu ra.

+0

Công việc thám tử giỏi. Lưu ý buildNetwork chỉ là một lối tắt và trong tài liệu API mà họ thảo luận về xây dựng một mạng (xem các tài liệu cho Mạng) –

1

Ở đây bạn có một simple example:

n = RecurrentNetwork() 
n.addModule(TanhLayer(hsize, name = 'h')) 
n.addModule(BiasUnit(name = 'bias')) 
n.addOutputModule(LinearLayer(1, name = 'out')) 
n.addConnection(FullConnection(n['bias'], n['h'])) 
n.addConnection(FullConnection(n['h'], n['out'])) 
n.sortModules() 

Lưu ý rằng BiasUnit được kết nối với TanhLayer làm có hiệu quả các lớp h một lớp với thiên vị.

Các vấn đề liên quan