2016-05-01 43 views
13

Tôi đang cố gắng để đào tạo một CNN để phát hiện đối tượng trên hình ảnh với các bộ dữ liệu CIFAR10 cho một hội thảo tại trường đại học của tôi, nhưng tôi nhận được lỗi sau:Theano CNN trên CPU: AbstractConv2d Theano tối ưu hóa thất bại

AssertionError: AbstractConv2d Theano optimization failed: there is no implementation available supporting the requested options. Did you exclude both "conv_dnn" and "conv_gemm" from the optimizer? If on GPU, is cuDNN available and does the GPU support it? If on CPU, do you have a BLAS library installed Theano can link against?

tôi đang chạy Anaconda 2.7 trong một máy tính xách tay Jupyter (đào tạo CNN trên CPU) từ một máy tính Windows 10. Như tôi đã có được cập nhật lên phiên bản theano mới nhất sử dụng git clone tôi đã cố gắng những điều sau đây:

  • loại trừ DNN và gemm trực tiếp từ bên trong mã THEANO_FLAGS='optimizer_excluding=conv_dnn, optimizer_excluding=conv_gemm'
  • loại trừ DNN và gemm trực tiếp từ cmd gõ THEANO_FLAGS='...' python <myscript>.py mà không đáng ngạc nhiên đưa ra lỗi "lệnh không xác định".
  • loại trừ DNN và gemm từ một .theanorc.txt mà tôi đưa vào C:/user/myusername

Thật không may, tôi vẫn nhận được lỗi tương tự và khi tôi gọi print(teano.config) các thuật ngữ "conv_dnn" và "conv_gemm " không xuất hiện.

  • Hơn nữa tôi đã cố gắng để tìm ra những Blas gói NumPy của tôi đang sử dụng (mà thường hoạt động tốt cho) và nếu gói đó là tĩnh sử dụng một công cụ từ dependencywalker.com nhưng tôi thất bại thảm hại

Vì vậy, đây là câu hỏi của tôi: Làm thế nào trên trái đất tôi có thể thiết lập các cờ cai cờ đúng cách và làm thế nào tôi có thể kiểm tra nếu tôi thành công trong việc làm như vậy? Nếu điều đó không hiệu quả, làm cách nào để kiểm tra BLAS tôi đang xây dựng? Tôi nên sử dụng cái nào và làm thế nào tôi có thể thay đổi sự phụ thuộc của theano?

Như bạn có thể đoán tôi không phải là một chuyên gia khi nói đến tất cả các gói, phụ thuộc, xây dựng và các công cụ khoa học máy tính ưa thích khác và tài liệu tôi tìm thấy chỉ là không noob bằng chứng để tôi sẽ biết ơn nhất mọi người có thể giúp tôi!

nhất

Jonas

+0

Cuối cùng tôi đã quyết định chuyển sang matconvnet trong MATLAB dễ dàng hơn để bắt đầu và chạy! Vì vậy, tôi không thể xác minh bạn câu trả lời nhưng cảm ơn bạn rất nhiều! – Jonasson

Trả lời

1

tôi đã cùng một vấn đề nhưng trong Linux. Hóa ra là BLAS không được lắp đặt tại tất cả, và tôi đã phải cài đặt nó một cách riêng biệt, bao gồm thiết lập một số biến môi trường mới:

export LD_LIBRARY_PATH="/home/username/anaconda2/lib" 
export LD_PRELOAD="/home/username/anaconda2/lib/libmkl_core.so:/home/MEDIANET/aharjunm/anaconda2/lib/libmkl_sequential.so" 

Tôi cũng phải đảm bảo rằng không có con đường python mâu thuẫn giữa Anaconda và bất kỳ cài đặt python trước đó.

Tôi biết rằng nó sẽ khác biệt rất nhiều trong Windows, nhưng vì thông báo lỗi chính xác như nhau, tiền đề cơ bản cho việc chữa bệnh cũng giống như: cài đặt BLAS. Bạn có thể tìm thấy nhiều nguồn cho điều đó, ví dụ: here.

7

Tôi đã có thông báo lỗi tương tự trên Windows. Tệp ".theanorc.txt" của tôi nằm trong "C: \ Users \ USERNAME \ .theanorc.txt" đã được định dạng sai và thư viện Blas không được Theano tìm thấy. Điều này có thể được nhìn thấy trong bảng điều khiển Python bằng cách viết "nhập theano; theano.config.blas.ldflags" đã cho chuỗi trống (''). Từ khóa blas phải là tiêu đề phần.

[global] 
floatX = float32 
device = cpu 

[blas] 
ldflags = -LC:\\openblas -lopenblas 

Trong C: \ openblass con đường Tôi có tập tin: libgcc_s_seh-1.dll, libgfortran-3.dll, libopenblas.dlllibquadmath-0.dll. Tham khảo http://deeplearning.net/software/theano/library/config.html

16

Thêm một dòng vào .theanorc tập tin

optimizer = None 

như một cấu hình toàn cầu.

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