TensorFlow

Bermula dengan TensorFlow

Bermula dengan TensorFlow
TensorFlow adalah anak otak Google dan pada intinya, ia adalah perpustakaan untuk pengiraan angka. Ia ditulis dalam C / C ++ dan mempunyai API yang sangat fleksibel. API ini dapat dihubungkan dengan front-end Python sehingga anda dapat menulis potongan kecil kod Python untuk menyelesaikan masalah yang rumit. API yang fleksibel dan konsisten juga membolehkan pembangun menggunakan kod front-end yang sama untuk dijalankan di pelbagai platform seperti GPU Nvidia, CPU tujuan umum dan bahkan peranti mudah alih dan terbenam yang masing-masing mempunyai pelaksanaan yang sangat berbeza di bahagian belakang.

TensorFlow telah banyak menggunakan bidang pembelajaran mesin, tepatnya kerana pembelajaran mesin melibatkan banyak bilangan dan digunakan sebagai teknik penyelesaian masalah umum. Dan walaupun kita akan berinteraksi dengannya menggunakan Python, ia mempunyai bahagian depan untuk bahasa lain seperti Go, Node.js dan juga C #.

Tensorflow seperti kotak hitam yang menyembunyikan semua kehalusan matematik di dalamnya dan pengembang hanya memanggil fungsi yang tepat untuk menyelesaikan masalah. Tetapi apa masalahnya?

Pembelajaran Mesin (ML)

Katakan anda merancang bot untuk bermain catur. Kerana cara catur dirancang, cara kepingan bergerak, dan objektif permainan yang ditentukan dengan baik, sangat mungkin untuk menulis program yang akan memainkan permainan dengan sangat baik. Sebenarnya, ia akan mengalahkan seluruh umat manusia dalam catur. Ia akan mengetahui dengan tepat apa langkah yang perlu dibuat memandangkan keadaan semua kepingan di papan tulis.

Walau bagaimanapun, program seperti ini hanya dapat bermain catur. Peraturan permainan dimasukkan ke dalam logik kod dan semua yang dilakukan oleh program ini adalah melaksanakan logik itu dengan teliti dan lebih tepat daripada manusia yang dapat. Ini bukan algoritma tujuan umum yang boleh anda gunakan untuk merancang bot permainan apa pun.

Dengan pembelajaran mesin, perubahan paradigma dan algoritma menjadi semakin umum.

Ideanya mudah, ia bermula dengan menentukan masalah klasifikasi. Contohnya, anda ingin mengautomasikan proses mengenal pasti spesies labah-labah. Spesies yang diketahui oleh anda adalah pelbagai kelas (tidak boleh dikelirukan dengan kelas taksonomi) dan tujuan algoritma adalah menyusun gambar yang tidak diketahui baru ke dalam salah satu kelas ini.

Di sini, langkah pertama bagi manusia adalah menentukan ciri-ciri pelbagai labah-labah individu. Kami akan memberikan data mengenai panjang, lebar, jisim badan dan warna labah-labah individu bersama dengan spesies yang menjadi miliknya:

Panjang Lebar Jisim Warna Tekstur Spesies
5 3 12 Coklat lancar Kaki Daddy Long
10 8 28 Coklat-hitam berbulu Tarantula

Memiliki banyak koleksi data labah-labah individu akan digunakan untuk 'melatih' algoritma dan set data lain yang serupa akan digunakan untuk menguji algoritma untuk melihat seberapa baiknya terhadap maklumat baru yang tidak pernah ditemui sebelumnya, tetapi yang sudah kita ketahui jawapan kepada.

Algoritma akan dimulakan secara rawak. Maksudnya, setiap labah-labah tanpa mengira ciri-cirinya akan diklasifikasikan sebagai spesies mana pun. Sekiranya terdapat 10 spesies yang berlainan dalam kumpulan data kami, maka algoritma naif ini akan diberikan klasifikasi yang betul kira-kira 1/10 masa kerana keberuntungan semata-mata.

Tetapi aspek pembelajaran mesin akan mula diambil alih. Ia akan mula mengaitkan ciri-ciri tertentu dengan hasil tertentu. Contohnya, labah-labah berbulu cenderung menjadi tarantula, begitu juga labah-labah yang lebih besar. Jadi bila-bila masa, labah-labah baru yang besar dan berbulu muncul, ia akan diberi kebarangkalian tarantula lebih tinggi. Perhatikan, kita masih bekerja dengan kebarangkalian, ini kerana kita sememangnya bekerja dengan algoritma probabilistik.

Bahagian pembelajaran berfungsi dengan mengubah kebarangkalian. Pada mulanya, algoritma bermula dengan menetapkan label 'spesies' secara rawak kepada individu dengan membuat korelasi rawak seperti, menjadi 'berbulu' dan menjadi 'kaki panjang ayah'. Apabila ia membuat korelasi dan kumpulan data latihan sepertinya tidak setuju dengannya, anggapan itu akan dijatuhkan.

Begitu juga, apabila korelasi berfungsi dengan baik melalui beberapa contoh, ia semakin kuat setiap masa. Kaedah membendung kebenaran ini sangat berkesan, berkat banyak kehalusan matematik yang, sebagai pemula, anda tidak perlu risau.

TensorFlow dan latih pengelasan Bunga anda sendiri

TensorFlow mengambil idea pembelajaran mesin lebih jauh. Dalam contoh di atas, anda bertanggungjawab menentukan ciri yang membezakan satu spesies labah-labah dengan yang lain. Kami harus mengukur labah-labah individu dengan susah payah dan membuat ratusan rekod tersebut.

Tetapi kita dapat melakukan yang lebih baik, dengan hanya memberikan data gambar mentah kepada algoritma, kita boleh membiarkan algoritma mencari corak dan memahami pelbagai perkara mengenai gambar seperti mengenali bentuk dalam gambar, kemudian memahami apa tekstur permukaan yang berbeza, warnanya , sebagainya dan sebagainya. Ini adalah idea permulaan penglihatan komputer dan anda juga dapat menggunakannya untuk input jenis lain, seperti isyarat audio dan melatih algoritma anda untuk mengenali suara. Semua ini terletak di bawah istilah 'Pembelajaran Dalam' di mana pembelajaran mesin dibawa ke tahap logiknya.

Kumpulan pengertian umum ini kemudiannya dapat dikhususkan ketika berhadapan dengan banyak gambar bunga dan mengkategorikannya.

Dalam contoh di bawah ini kita akan menggunakan Python2.7 front-end untuk berinteraksi dengan TensorFlow dan kami akan menggunakan pip (bukan pip3) untuk memasang TensorFlow. Sokongan Python 3 masih sedikit kereta.

Untuk membuat pengelasan gambar anda sendiri, gunakan TensorFlow terlebih dahulu mari memasangnya menggunakan pip:

$ pip memasang tensorflow

Seterusnya, kita perlu mengklon tensorflow-untuk-penyair-2 git repositori. Ini adalah tempat yang sangat baik untuk bermula kerana dua sebab:

  1. Ia ringkas dan senang digunakan
  2. Ia dilatih pra-tahap hingga tahap tertentu. Sebagai contoh, pengelasan bunga sudah dilatih untuk memahami tekstur apa yang dilihatnya dan bentuk apa yang dilihatnya sehingga secara komputasi kurang intensif.

Mari dapatkan repositori:

$ git klon https: // github.com / googlecodelabs / tensorflow-untuk-penyair-2
$ cd tensorflow-untuk-penyair-2

Ini akan menjadi direktori kerja kami, jadi semua perintah harus dikeluarkan dari dalamnya, mulai sekarang.

Kami masih perlu melatih algoritma untuk masalah khusus mengenali bunga, untuk itu kami memerlukan data latihan, jadi mari dapatkannya:

$ curl http: // muat turun.aliran tensor.org / contoh_ gambar / bunga_foto.tgz
| tar xz -C tf_files

Direktori… ./tensorflow-for-penyair-2 / tf_files mengandungi banyak gambar ini berlabel dengan betul dan siap digunakan. Gambar akan dibuat untuk dua tujuan yang berbeza:

  1. Melatih program ML
  2. Menguji program ML

Anda boleh menyemak kandungan folder tf_files dan di sini anda akan mendapati bahawa kami menyempitkan hanya kepada 5 kategori bunga, iaitu bunga aster, bunga tulip, bunga matahari, dandelion, dan mawar.

Melatih model

Anda boleh memulakan proses latihan dengan terlebih dahulu menetapkan pemalar berikut untuk mengubah ukuran semua gambar input menjadi ukuran standard, dan menggunakan seni bina mobilenet ringan:

$ IMAGE_SIZE = 224
$ ARKITEKTUR = "mobilenet_0.50 _ $ IMAGE_SIZE "

Kemudian gunakan skrip python dengan menjalankan perintah:

skrip $ python -m.melatih semula \
--bottleneck_dir = tf_files / bottleneck \
--bagaimana_macam_pelatihan_langkah = 500 \
--model_dir = tf_files / model / \
--ringkasan_dir = tf_files / training_summaries / "$ ARCHITECTURE" \
--output_graph = tf_files / retrained_graph.pb \
--output_labels = tf_files / dilatih_label.txt \
--seni bina = "$ ARKITEKTUR" \
--image_dir = tf_files / bunga_gambar

Walaupun terdapat banyak pilihan yang ditentukan di sini, kebanyakan dari mereka menentukan direktori data input anda dan jumlah lelaran, serta fail output di mana maklumat mengenai model baru akan disimpan. Tidak boleh mengambil masa lebih dari 20 minit untuk menggunakan komputer riba biasa-biasa saja.

Setelah skrip selesai menjalani latihan dan ujian, ini akan memberi anda anggaran ketepatan model terlatih, yang mana kami sedikit lebih tinggi dari 90%.

Menggunakan model terlatih

Anda sekarang sudah bersedia untuk menggunakan model ini untuk pengecaman gambar dari sebarang gambar baru bunga. Kami akan menggunakan gambar ini:

Wajah bunga matahari hampir tidak kelihatan dan ini merupakan cabaran besar bagi model kami:

Untuk mendapatkan gambar ini dari Wikimedia commons, gunakan wget:

$ wget https: // muat naik.wikimedia.org / wikipedia / commons / 2/28 / Sunflower_head_2011_G1.jpg
$ mv Sunflower_head_2011_G1.jpg tf_files / tidak diketahui.jpg

Ia disimpan sebagai tidak diketahui.jpg di bawah tf_files subdirektori.

Sekarang, untuk masa kebenaran, kita akan melihat apa yang dikatakan oleh model kita mengenai gambar ini.Untuk melakukan itu, kami meminta label_image skrip:

skrip $ python -m.label_image --graph = tf_files / retrained_graph.hlm --
gambar = tf_files / tidak diketahui.jpg

Anda akan mendapat output yang serupa dengan ini:

Nombor di sebelah jenis bunga menunjukkan kebarangkalian bahawa gambar yang tidak diketahui kami termasuk dalam kategori itu. Sebagai contoh, ia adalah 98.04% pasti bahawa gambar itu adalah bunga matahari dan hanya 1.37% kemungkinan ia menjadi mawar.

Kesimpulannya

Walaupun dengan sumber komputasi yang sangat biasa, kami melihat ketepatan yang mengejutkan dalam mengenal pasti gambar. Ini jelas menunjukkan kekuatan dan fleksibiliti TensorFlow.

Mulai sekarang, anda boleh mula bereksperimen dengan pelbagai jenis input lain atau cuba mula menulis aplikasi anda sendiri menggunakan Python dan TensorFlow. Sekiranya anda ingin mengetahui cara kerja dalaman pembelajaran mesin sedikit lebih baik di sini adalah cara interaktif untuk anda melakukannya.

Emulator Konsol Permainan Terbaik untuk Linux
Artikel ini akan menyenaraikan perisian emulasi konsol permainan popular yang tersedia untuk Linux. Emulation adalah lapisan keserasian perisian yang ...
Distro Linux Terbaik untuk Permainan pada tahun 2021
Sistem operasi Linux telah jauh dari tampilan asal, ringkas dan berasaskan pelayan. OS ini telah berkembang pesat dalam beberapa tahun kebelakangan in...
Cara menangkap dan streaming sesi permainan anda di Linux
Pada masa lalu, bermain permainan hanya dianggap sebagai hobi, tetapi seiring dengan berjalannya waktu, industri permainan menyaksikan pertumbuhan yan...