scipy.optizes.fmin_bfss: Lỗi mong muốn không nhất thiết phải đạt được do mất độ chính xác


8

Tôi nhận được cảnh báo trong chủ đề bài viết khi cố gắng tối ưu hóa một chức năng trong Python bằng hàm scipy.optizes.fmin_bfss . Đầu ra hoàn chỉnh:

Cảnh báo: Lỗi mong muốn không nhất thiết phải đạt được do mất độ chính xác

     Current function value: nan
     Iterations: 1
     Function evaluations: 18
     Gradient evaluations: 3

Đó không phải là một lỗi nghiêm trọng, tôi đang nhận được câu trả lời, nhưng chúng khác xa với tìm kiếm tối ưu của tôi.

Có bất kỳ lỗi "noob" điển hình nào có thể tạo ra lỗi này không? Tôi chỉ bắt đầu làm việc với gói này ngày hôm qua; vì nó là, tôi thậm chí không chắc bắt đầu tìm kiếm ở đâu. Bất kỳ trợ giúp được đánh giá cao!

Câu trả lời:


9

Nó rất hữu ích trong các tình huống như thế này để xem mã nguồn . Điều này là dễ dàng bởi vì mọi thứ trong scipylà nguồn mở!

Như bạn có thể thấy từ việc đọc mã nguồn, thông điệp cảnh báo được in khi warnflag==2. Điều này được đặt ở nơi khác trong mã khi linesearchhàm trả về Không (nó không thành công).

Vậy tại sao dòng nghiên cứu thất bại? Mục tiêu của thuật toán tối ưu hóa là tìm cực tiểu của một số hàm mục tiêu thông qua một bộ lặp liên tiếp. Trong trường hợp này, tìm kiếm dòng đang cố gắng tìm kích thước bước trong đó các xấp xỉ trong BFGS vẫn còn hiệu lực. Khi Hessian của chức năng hoặc độ dốc của nó không hoạt động theo một cách nào đó, kích thước bước được đặt trong ngoặc có thể được tính là 0, mặc dù độ dốc khác không.

Tôi đoán đề nghị của tôi là đi đến tài liệu (Nocedal và Wright có một cuộc thảo luận tốt về tìm kiếm dòng và phương pháp BFGS) hoặc đến chức năng của bạn và đảm bảo rằng nó hoạt động tốt trong khu vực bạn đang tìm kiếm.


Cảm ơn, tôi đã kiểm tra mã nguồn. Than ôi, vấn đề là tôi thiếu kiến ​​thức lý thuyết về BFGS :-) Tôi đã quản lý để sử dụng BFGS thành công với việc triển khai không được vector hóa, vì vậy tôi đoán ma trận của tôi không hoạt động như mong đợi. Đó có thể là một hướng để tìm ra vấn đề.
ACEG

Nếu bạn nêu chức năng thực tế bạn đang cố gắng giảm thiểu và khu vực bạn đang tìm kiếm, chúng tôi có thể cung cấp cho bạn thêm một số manh mối về cách tiến hành.
Aron Ahmadia

1
Cảm ơn, tôi đã giải quyết vấn đề trong lúc này. Lỗi có (như thường xảy ra) hoàn toàn không liên quan đến kết quả có vấn đề. Linh cảm của tôi là đúng, tôi đã vượt qua ma trận trong đó phương pháp dự kiến ​​ma trận chuyển vị. Bây giờ tôi vẫn nhận được cảnh báo ban đầu, nhưng có nhiều lần lặp lại và tôi nhận được các giá trị tốt.
ACEG

Liên kết bị thối ... cập nhật liên kết và bao gồm các bit có liên quan trong chính câu trả lời
innisfree 18/07/17

liên kết mục nát cố định.
Aron Ahmadia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.