Saya menggunakan Neural Networks untuk memecahkan berbagai masalah pembelajaran Mesin. Saya menggunakan Python dan pybrain tetapi pustaka ini hampir dihentikan. Apakah ada alternatif lain yang baik di Python?
machine-learning
python
neural-network
marcodena
sumber
sumber
Jawaban:
UPDATE: lanskap telah berubah sedikit sejak saya menjawab pertanyaan ini pada Juli '14, dan beberapa pemain baru telah memasuki ruang. Secara khusus, saya akan merekomendasikan memeriksa:
Masing-masing memiliki kekuatan dan kelemahan, jadi cobalah semuanya dan lihat mana yang paling sesuai dengan use case Anda. Meskipun saya akan merekomendasikan menggunakan PyLearn2 setahun yang lalu, komunitas tidak lagi aktif jadi saya akan merekomendasikan mencari di tempat lain. Respons orisinal saya untuk jawabannya dimasukkan di bawah ini tetapi sebagian besar tidak relevan pada saat ini.
PyLearn2 umumnya dianggap sebagai perpustakaan pilihan untuk jaringan saraf dan pembelajaran mendalam dengan python. Ini dirancang untuk eksperimen ilmiah yang mudah daripada kemudahan penggunaan, sehingga kurva belajarnya agak curam, tetapi jika Anda mengambil waktu Anda dan mengikuti tutorial saya pikir Anda akan senang dengan fungsi yang disediakannya. Semuanya mulai dari Multilayer Perceptrons standar hingga Mesin Boltzmann Terbatas hingga Jaring Konvolusional ke Autoencoder disediakan. Ada dukungan GPU yang hebat dan semuanya dibangun di atas Theano, jadi kinerjanya biasanya cukup baik. Sumber untuk PyLearn2 tersedia di github .
Ketahuilah bahwa PyLearn2 memiliki masalah yang berlawanan dengan PyBrain saat ini - daripada ditinggalkan, PyLearn2 sedang dalam pengembangan aktif dan dapat mengalami perubahan yang sering.
sumber
Tensor Flow ( docs ) oleh Google adalah kerangka kerja bagus lainnya yang memiliki diferensiasi otomatis. Saya telah menuliskan beberapa pemikiran cepat tentang Google Tensor Flow di blog saya, bersama dengan contoh MNIST yang mereka miliki dalam tutorial mereka.
Lihat juga: tutorial Tensorflow XOR saya
Lasagna ( dokumen ) sangat bagus, karena menggunakan theano (→ Anda dapat menggunakan GPU) dan membuatnya lebih mudah untuk digunakan. Penulis lasagna memenangkan tantangan Kaggle Galaxy, sejauh yang saya tahu. Ini bagus dengan nolearn . Berikut ini contoh jaringan MNIST:
Caffe adalah pustaka C ++, tetapi memiliki binding Python. Anda dapat melakukan sebagian besar hal dengan file konfigurasi (prototxt). Ini memiliki banyak pilihan dan juga dapat menggunakan GPU.
sumber
Pylearn mengandalkan Theano dan seperti yang disebutkan dalam jawaban lain untuk menggunakan perpustakaan itu cukup rumit, sampai Anda dapat menemukannya.
Sementara itu saya akan menyarankan menggunakan Theanets . Itu juga dibangun di atas Theano, tetapi jauh lebih mudah untuk dikerjakan. Mungkin benar, bahwa ia tidak memiliki semua fitur Pylearn, tetapi untuk pekerjaan dasar itu sudah cukup.
Ini juga open source, sehingga Anda dapat menambahkan jaringan kustom dengan cepat, jika Anda berani. :)
EDIT: Des 2015. Baru-baru ini saya mulai menggunakan Keras . Levelnya sedikit lebih rendah daripada Theanets, tetapi jauh lebih kuat. Untuk tes dasar, Theanets sesuai. Tetapi jika Anda ingin melakukan penelitian di bidang ANN Keras jauh lebih fleksibel. Plus Keras dapat menggunakan Tensorflow sebagai backend.
sumber
TensorFlow (oleh Google, dirilis pada 2015-11-09) terlihat menjanjikan.
FYI:
sumber
Pylearn2 tampaknya menjadi pustaka pilihan, namun saya menemukan file konfigurasi YAML mereka tidak cocok.
Python sendiri dirancang untuk menjadi bahasa yang mudah untuk pembuatan prototipe, mengapa Anda tidak menggunakannya untuk mendefinisikan properti jaringan itu sendiri? Kami memiliki editor hebat dengan pelengkapan otomatis yang akan membuat hidup Anda jauh lebih mudah dan Python tidak seperti C ++ di mana Anda harus menunggu lama dibangun untuk menyelesaikannya sebelum Anda dapat menjalankan kode Anda.
File YAML di sisi lain Anda harus mengedit menggunakan editor teks standar tanpa bantuan apa pun dan ini membuat kurva belajar lebih curam.
Saya mungkin kehilangan gambaran besar tetapi saya masih tidak mengerti apa yang mereka pikirkan, saya tidak berpikir prototyping dalam kode akan jauh lebih lambat. Untuk alasan itu saya mempertimbangkan Theanets atau menggunakan Theano secara langsung.
sumber
Saya suka Blok , yang juga dibangun di atas Theano. Jauh lebih mudah didekati daripada PyLearn2, dan lebih kaya fitur daripada Lasagna. Ditulis dengan rapi juga.
Diperbarui Jan 2016:
Pada saat penulisan, Keras memiliki momentum paling besar. Ini sangat modular dan dapat berjalan di kedua Theano dan Tensorflow, memberikannya peluang besar.
sumber
MXNet :
sumber
Dari apa yang saya dengar, Pylearn2 mungkin saat ini menjadi perpustakaan pilihan bagi kebanyakan orang. Ini mengingatkan saya pada posting blog baru-baru ini beberapa bulan yang lalu yang mencantumkan semua perpustakaan pembelajaran mesin yang berbeda dengan penjelasan singkat
https://www.cbinsights.com/blog/python-tools-machine-learning
Bagian yang Anda mungkin tertarik di sini adalah "Belajar Dalam". Tentang Pylearn2, dia menulis
sumber
Saya menulis posting ini yang merinci beberapa favorit pribadi saya:
Perpustakaan Pembelajaran Mesin Terbaik dengan Python
Karena lebih dari 30 perpustakaan berbeda disebutkan, saya tidak akan memposting semuanya di sini, tetapi ini adalah yang paling populer:
(Maaf, tidak dapat menautkan ke repo Github karena rep saya masih <10 ...)Sunting: Menambahkan tautan ke repo Github.
sumber
neon :
sumber
Hanya dengan menambahkan beberapa sumber daya lagi. Baru-baru ini ada sebuah makalah yang mempelajari perbedaan antara beberapa paket jaringan saraf dan jaringan saraf dalam.
Di sini Anda dapat menemukan informasinya . Tampaknya Torch dan TensorFlow adalah pemenangnya.
Catatan: tidak semuanya dalam python. Namun, saya mempostingnya untuk membuka diskusi.
sumber
Microsoft Cognition Toolkit (sebelumnya dikenal sebagai CNTK) memiliki API Python . Di antara hal-hal lain, itu seharusnya baik untuk multi-GPU :
Contoh dan tutorial dapat ditemukan di https://github.com/Microsoft/CNTK/tree/master/bindings/python
sumber
DyNet: The Dynamic Neural Network Toolkit. Dari {1}:
Itu sebelumnya dikenal sebagai cnn (yang mengikat python bernama pycnn).
Referensi:
sumber
Saya merekomendasikan Anda untuk menggunakan tensorflow yang berada di bawah pengembangan yang kuat dan mendukung pembelajaran yang mendalam. Anda dapat menggunakan jaringan saraf tingkat tinggi API Keras yang berjalan di atas tensorflow dan sangat mudah digunakan, cukup coba tutorial dan Anda akan menyukainya.
sumber
PyTorch
Ini mendapatkan banyak dukungan karena kemudahan penggunaan dan kesamaan dengan Python dasar.
Ia menjalankan "baris demi baris" (melalui grafik dinamis), seperti halnya Python normal dan dapat dengan mudah didebug - bahkan menggunakan pernyataan cetak standar. Ia juga terintegrasi dengan sangat baik dengan NumPy dan linbrary Python terkenal lainnya, seperti Scikit Learn.
Karena membuat pemodelan menjadi mudah, sangat bagus untuk membuat prototipe dan menjelajahi ide-ide baru secara umum.
Ini mendukung banyak GPU dan melakukannya dengan cara yang sangat mudah.
Lihat lebih banyak fitur di sini .
Meskipun banyak manfaat di atas membuat PyTorch jauh lebih bagus untuk digunakan daripada perpustakaan yang biasa digunakan lainnya, perlu disebutkan bahwa rilis utama Tensorflow yang akan datang, secara default, juga akan menggunakan pembuatan grafik dinamis (alias mode bersemangat ). Ini akan membuatnya sebanding dengan PyTorch dalam penggunaan.
sumber
Jika Anda tertarik pada perbandingan kinerja, Soumith Chintala mempertahankan serangkaian tolok ukur convnet yang mencakup beberapa kerangka kerja python yang telah disebutkan ( TensorFlow , chainer , neon , Theano ):
sumber
NeuPy adalah perpustakaan Python untuk Jaringan Syaraf Tiruan. NeuPy mendukung berbagai jenis Neural Networks dari perceptron sederhana hingga model pembelajaran yang mendalam.
sumber