2016-04-16 44 views
7

Tôi quan tâm đến mạng thần kinh xoắn (CNNs) như là một ví dụ về ứng dụng tính toán mở rộng đó là phù hợp với khả năng tăng tốc bằng phần cứng cấu hình lại (tức là cho phép nói FPGA)Một mạng lưới thần kinh Convolutional đơn giản đang

Để làm được điều mà tôi cần kiểm tra mã CNN đơn giản mà tôi có thể sử dụng để hiểu cách chúng được triển khai, các tính toán trong mỗi lớp diễn ra như thế nào, đầu ra của mỗi lớp đang được nạp vào đầu vào của lớp tiếp theo như thế nào. Tôi quen thuộc với phần lý thuyết (http://cs231n.github.io/convolutional-networks/)

Nhưng, tôi không quan tâm đến việc đào tạo CNN, tôi muốn có một mã CNN hoàn chỉnh, tự chứa được đào tạo trước và tất cả các giá trị trọng số và độ lệch.

Tôi biết rằng có rất nhiều thư viện CNN, ví dụ: Caffe, nhưng vấn đề là không có mã ví dụ tầm thường được tự chứa. ngay cả đối với ví dụ Caffe đơn giản "cpp_classification" nhiều thư viện được gọi, kiến ​​trúc của CNN được biểu diễn dưới dạng tệp .prototxt, các kiểu đầu vào khác như .caffemodel và .binaryproto có liên quan. thư viện openCV2 cũng được gọi. có các lớp và lớp trừu tượng và các thư viện khác nhau làm việc cùng nhau để tạo ra kết quả phân loại.

Tôi biết rằng những trừu tượng đó là cần thiết để tạo ra một triển khai CNN "có thể sử dụng", nhưng đối với người phần cứng cần mã nguồn xương trần để nghiên cứu thì đây là quá nhiều "công việc không liên quan".

Câu hỏi của tôi là: Có ai có thể hướng dẫn tôi thực hiện CNN đơn giản và độc lập mà tôi có thể bắt đầu không?

Trả lời

9

Tôi có thể đề xuất tiny-cnn. Nó đơn giản, nhẹ (ví dụ như chỉ tiêu đề) và CPU, trong khi cung cấp một số lớp thường xuyên được sử dụng trong văn học (ví dụ như các lớp gộp, lớp bỏ hoặc lớp chuẩn hóa phản hồi cục bộ). Điều này có nghĩa là bạn có thể dễ dàng khám phá việc triển khai hiệu quả các lớp này trong C++ mà không cần kiến ​​thức về CUDA và đào qua mã I/O và khung theo yêu cầu của khung như Caffe. Việc triển khai thiếu một số nhận xét, nhưng mã vẫn dễ đọc và dễ hiểu.

Đã cung cấp MNIST example là khá dễ sử dụng (đã thử bản thân mình cách đây một thời gian) và đào tạo hiệu quả. Sau khi đào tạo và kiểm tra, trọng số được ghi vào hồ sơ. Sau đó, bạn có một mô hình được đào tạo đơn giản mà từ đó bạn có thể bắt đầu, hãy xem examples/mnist/test.cppexamples/mnist/train.cpp được cung cấp. Nó có thể dễ dàng được nạp để thử nghiệm (hoặc nhận dạng chữ số) sao cho bạn có thể gỡ lỗi mã trong khi thực hiện một mô hình đã học.

Nếu bạn muốn kiểm tra mạng phức tạp hơn, hãy xem Cifar-10 Example.

+0

Cảm ơn bạn! tiny-cnn thực sự là cách dễ đọc hơn cho người mới bắt đầu hơn là Caffe và là một điểm khởi đầu tốt. – bromanous

5

này là việc thực hiện đơn giản nhất tôi đã thấy: DNN McCaffrey

Ngoài ra, các mã nguồn cho this by Karpathy trông khá đơn giản.

+0

Cảm ơn bạn! các liên kết của bạn rất hữu ích cũng như cả về các khái niệm mã hóa và học tập. – bromanous

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