Apa lagi yang ditawarkan TensorFlow kepada keras?

16

Saya sadar bahwa keras berfungsi sebagai antarmuka tingkat tinggi ke TensorFlow.

Tetapi bagi saya tampaknya keras dapat melakukan banyak fungsi sendiri (input data, pembuatan model, pelatihan, evaluasi).

Selain itu, beberapa fungsionalitas TensorFlow dapat porting langsung ke keras (misalnya dimungkinkan untuk menggunakan metrik tf atau fungsi kerugian dalam keras).

Pertanyaan saya adalah, apa yang ditawarkan TensorFlow yang tidak bisa direproduksi dengan keras?

Javier
sumber

Jawaban:

15

Kerangka kerja Deep Learning beroperasi pada 2 level abstraksi:

  • Level Bawah : Di sinilah kerangka kerja seperti Tensorflow, MXNet, Theano, dan PyTorch berada. Ini adalah tingkat di mana operasi matematika seperti Generalized Matrix-Matrix perkalian dan jaringan saraf Neural seperti operasi Konvolusional diimplementasikan.
  • Level Lebih Tinggi : Di sinilah kerangka kerja seperti Keras duduk. Pada Level ini, primitif level bawah digunakan untuk mengimplementasikan abstraksi Neural Network seperti Layers dan model. Secara umum, pada tingkat ini, API bermanfaat lainnya seperti penghematan model dan pelatihan model juga diterapkan.

Anda tidak dapat membandingkan Keras dan TensorFlow karena mereka berada pada level abstraksi yang berbeda. Saya juga ingin mengambil kesempatan ini untuk berbagi pengalaman saya menggunakan Keras:

  • Saya tidak setuju bahwa Keras hanya berguna untuk pekerjaan Pembelajaran dasar. Keras adalah API yang ditulis dengan indah. Sifat fungsional API membantu Anda sepenuhnya dan keluar dari jalan Anda untuk aplikasi yang lebih eksotis. Keras tidak memblokir akses ke kerangka kerja tingkat bawah.
  • Keras menghasilkan kode yang jauh lebih mudah dibaca dan ringkas.
  • Keras model API Serialization / Deserialization, panggilan balik, dan streaming data menggunakan generator Python sangat matang.
  • Keras telah dinyatakan sebagai abstraksi resmi tingkat tinggi untuk TensorFlow.
kucing
sumber
9

Jika Anda menggunakan TensorFlow sebagai backend Anda dalam keras, mereka kurang lebih memiliki fungsi yang sama. Melalui keras.backendAnda akses fungsi TensorFlow, sementara melalui tf.kerasAnda memiliki akses ke seluruh API melalui TensorFlow.

Karena ini masalahnya, saya sarankan Anda tetap menggunakan keras dan jika Anda menemukan sesuatu yang hilang (misalnya fungsi metrik atau kerugian), Anda dapat mengimpornya melalui TensorFlow.

TmBrdy
sumber
5

Keras seperti yang Anda katakan berisi semua fungsi tetapi di luar kotak itu hanya berjalan pada CPU. Dengan memasang backend seperti TensorFlow atau CNTK (yang saya pribadi suka) Anda membuka kekuatan GPU yang dapat mempercepat beberapa beban kerja ML, khususnya beban kerja DL. Jika Anda tidak memiliki GPU diskrit, manfaatnya minimal.

Sebagian besar waktu dalam praktek Anda hanya dapat mengatur backend Anda dan melupakannya, dan bekerja sepenuhnya dalam Keras, bahkan menukar backend Anda dengan yang lain dan membandingkan kinerja. Jadi tidak perlu mempelajari spesifikasi TF kecuali Anda ingin kode langsung di level yang lebih rendah.

Gayus
sumber
5

Mengingat bahwa TensorFlow adalah pustaka yang lebih rendah daripada Keras pada umumnya, Anda akan melihat ini menawarkan fleksibilitas ekstra dan peningkatan kinerja (walaupun relatif kecil, sebagian besar tergantung pada bagaimana Anda menulis kode Anda). Saya akan mengatakan, jika Anda dalam penelitian atau mengembangkan tipe baru jaringan saraf, pengetahuan tentang TensorFlow akan sangat berguna. Di luar itu, Anda harus baik-baik saja dengan Keras walaupun memahami cara kerja TensorFlow masih bisa membantu jika Anda menggunakannya sebagai backend.

Namun, beberapa saat yang lalu saya membaca bahwa Keras dan TensorFlow akan menjadi lebih terintegrasi yang akan membuat hidup Anda jauh lebih mudah.

Jelas ini hanya pandangan pribadi saya, oleh karena itu saya ingin mengarahkan Anda ke beberapa artikel tambahan sehingga Anda dapat membaca sendiri. Diskusi tentang Kaggle ini memberikan gambaran hebat tentang argumen dan kapan menggunakannya. Posting sedang pada topik ini.

Felix van Doorn
sumber
5

Setiap pemula memiliki pertanyaan ini. Keras sepertinya selalu memecahkan fungsi dasar seperti input data, pembuatan model, pelatihan, evaluasi dalam lebih sedikit baris kode.

Tetapi kemudian ketika Anda mulai mengembangkan model ML dari awal, Anda menyadari bahwa Anda dapat memprogram banyak matematika ke dalam NN, dan perpustakaan tensorflow menyediakan banyak fungsi dan kontrol yang membuat konsep-konsep tersebut praktis. Aspek matematika Pembelajaran dapat dengan mudah divisualisasikan dan dibuat menggunakan NN dibuat menggunakan tf.

abunickabhi
sumber