2012-02-04 43 views
9

Tôi có một mạng lưới thần kinh n pybrain, với hai đầu vào, một lớp ẩn và một đầu ra layer.I sử dụng sau đây để đào tạo:Làm thế nào tôi có thể tính toán hoặc theo dõi việc đào tạo mạng thần kinh trong pybrain?

trainer = BackpropTrainer(net,ds) 
trainer.trainUntilConvergence() 

ròng là mạng thần kinh và ds là dữ liệu huấn luyện.

Câu hỏi của tôi là nếu và cách tôi có thể tính toán thời gian cần thiết để hoàn thành khóa đào tạo hoặc cách tôi có thể theo dõi tiến trình đào tạo. Cảm ơn.

Trả lời

10

Bạn luôn có thể phân lớp BackpropTrainer (mã nguồn here) và ghi đè trainUntilConvergence nếu sử dụng maxEpochs, theo dõi tỷ lệ phần trăm của sự hoàn chỉnh bằng cách sử dụng tỷ lệ giữa các thời kỳ và các thời kỳ.

Nếu không sử dụng maxEpochs bạn luôn có thể dự đoán số lượng kỷ nguyên còn lại dựa trên tỷ lệ thay đổi trung bình trong xác nhận xác thực và kích thước continueEpochs. Hoặc chỉ đơn thuần là kiểm tra tốc độ thay đổi trong validationerrors. Nếu bạn muốn lập bản đồ thời gian, bạn sẽ phải lập hồ sơ thời gian của mỗi kỷ nguyên và lưu trữ chúng.

+1

Lý tưởng nhất là bạn muốn sử dụng trainEpochs() thay vì sửa đổi trainUntilConvergence(). Đào tạo cho X số kỷ nguyên, kết quả kiểm tra, Đào tạo x số kỷ nguyên. Lặp lại cho đến khi hội tụ hoặc epochs tối đa. – NothingMore

2

Không có gì để thêm vào những nhận xét trước đó trừ mã tôi sử dụng cho nó:

maxepochs=20 
results=[] 
for i in range(len(maxepochs)): 
    aux = trainer.train() 
    results.extend(aux) 
    plt.figure() 
    plt.scatter(range(len(results[0])),results[0]) 
    plt.draw() 

Bạn sẽ nhận được một âm mưu mới tại mỗi chu kỳ. Không phải là rất tốt đẹp, nhưng nó hoạt động cho tôi.

Hy vọng tôi sẽ giúp bạn

+0

maxepochs là một int. Không có tài sản len. Ý của bạn là results.append (aux)? – agcala

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