Mar 072017
 
1.033 views

IBM Ticari Kuantum Bilgisayarlar Gerçekleşmek Üzere

Independent‘te yayınlanan bir makaleye göre IBM Q adıyla kurulan yeni bir bölüm ticari kuantum bilgisayarları hayata geçirmek için kolları sıvamış durumda.

IBM yetkilileri, klasik bilgisayarlarla ele alınamayan ve hala çözülememiş bazı karmaşık problemleri halledebilmek için kuantum bilgisayarlara ihtiyaç duyulduğunu belirtiyorlar.

Ticari Kuantum Bilgisayarlar

Foto: tr.wikipedia.org

Kuantum bilgisayarların üzerinde çalışacak uygulamalar klasik bilgisayarlar üzerinde koşan uygulamalardan farklı olmak zorunda. Bu yüzden IBM Q yetkilileri bu tür uygulamaların yıl sonuna doğru yayınlanacak simülatörler üzerinde geliştirilmeye başlanması gerektiğini vurguluyor. Bu çalışmalarla ilaç endüstrisi, malzeme geliştirme ve yapay zeka gibi alanlarda yeni çözümler üretilmesi bekleniyor.

Klasik bilgisayarlar elektronik devre kapılarının açık veya kapalı olmasına, yani sadece 0 ve 1’lerden oluşan iki tabanlı aritmetiğe dayanıyor. Sıfır veya bir konumunu belirten birim “bit” olarak adlandırılıyor. Halen 8 bitlik, 32 bitlik ve 64 bitlik sistemler yaygın olarak kullanılmakta.

Kuantum bilgisayarların temel birimine ise “qubit” (kübit) adı verilmiş. Bu sistem fotonların dikey ve yatay polarizasyonlarını kullanır ve iki fazlı kuantum sistemi (two-state quantum system) olarak anılır. Kübitler 0, bir ve bu ikisi arasında bir başka değer daha alabilir. Bunlara ek olarak daha fazla “durum”a sahip olabilen kuditler üzerinde de çalışmalar sürmektedir.

Rus Kuantum Merkezi’nden yapılan açıklamaya göre beş seviyeli bir kudit ile kuantum hesaplamalarının yapılabildiği gösterildi.

Öyle görünüyor ki, kuantum bilgisayarlarla tanışmamız için çok fazla beklememiz gerekmeyecek.

Ahmet Aksoy

Kaynaklar:

Mar 022017
 
1.035 views

Karar ağacı görselleştirilmesi örnek kodlar

Bu yazımda ele alacağım örnek kodların orijinali Josh Gordon’a aittir. Bu kodlar Python2 için düzenlenmiştir. Ben ise aynı kodların Python 3.5.2 altında çalışabilmesi için gereken düzeltmeleri yaptım. Özellikle pydot kütüphanesi yerine pydotplus kütüphanesinin yüklenmesi, kodların çalıştırılabilmesi açısından önemlidir.

Kullandığımız veritabanı, sklearn kütüphanesiyle birlikte gelmektedir ve sadece 150 kayda sahiptir. Dolayısıyla zayıf konfigürasyonlu makinelerde bile sonuçlar çok kısa sürede alınabilmektedir.

Kodları çalıştırdığım sistem ve gereken kütüphanelerin sürüm numaralarını herhangi bir olumsuzluk olasılığına karşı not ettim:
Ubuntu 16.04
Intel i5 4 çekirdek – 8GB bellek
Python 3.5.2
sklearn 0.18.1
numpy 1.12.0
pydotplus 2.0.2

VERİ TABLOSUNUN GENEL AÇIKLAMASI

Veritabanı İris çiçeği‘nin bilinen üç ayrı türüne ait çeşitli yaprak boyutlarını içermektedir.

Karar ağacı görselleştirilmesi

Iris sotosa Credits: en.wikipedia.org

Bu verisetinin ayrıntılarını https://en.wikipedia.org/wiki/Iris_flower_data_set adresinden inceleyebilirsiniz.

İngilizce bilmeyen okuyucularımız için kısa bir özet yapayım.
İris çiçeğinin setosa, versicolor ve virginica adları verilen 3 ayrı türü bulunmaktadır. Bu türlere ait farklı çiçeklerin çanak yaprak (sepal) ve taç yaprak (petal) ölçüleri en ve boy olarak saptanmıştır. Tablo yapısı şöyledir:

Sepal length Sepal width Petal length Petal width Species
Çanak yap. boy Çanak yap. en Taç yap. boy Taç yap. en Tür
5.1 3.5 1.4 0.2 I. setosa

Ölçüler, santimetre cinsinden verilmiştir. Tabloda 150 kayıt bulunmaktadır.

Aşağıdaki kodların karar ağacı grafik dosyalarını üretebilmesi için sisteminize graphviz uygulamasını yüklemiş olmanız gerekir. Kurulumu aşağıdaki gibi kolayca yapabilirsiniz.

KODLAR

Sorularınızı yorum alanından bana iletebilirsiniz.

Ahmet Aksoy

Links:

Şub 252017
 
1.159 views

DeepCoder internetten topladığı kodlarla program yazıyor

DeepCoder internetten topladığı kodlarla program yazıyor

Microsoft ve Cambridge Üniversitesinin işbirliğiyle geliştirilen DeepCoder sistemi internetten ve diğer kaynaklardan derlediği kod parçalarını kullanarak kendisine verilen sorunu çözen yazılımlar üretebiliyor.

DeepCoder internetten topladığı kodlarla program yazıyor

Resim: winbuzzer.com

Aslında bir yapay zeka (AI) çalışması olan DeepCoder, kod parçalarının depolandığı veritabanını tarayarak yapacağı işe uygun bileşenleri buluyor ve uygun şekilde bir araya getiriyor.

Bu teknik, bir çok programcının çalışma biçimini de yansıtıyor. Yeni yazılan bir çok uygulamanın önemli bir kısmı daha önce geliştirilmiş olan çeşitli kütüphaneler ve yordamları kullanarak geliştiriliyor. Doğal olanı da bu. Aksi halde her çalışmada Amerikayı yeniden keşfeder gibi, daha önce binlerce kez yeniden yazılmış olan ve geliştirilerek sorunsuz hale getirilen hazır kodları kullanmak yerine, sıfırdan bir çaba içine girmek gerekirdi. Modern çağın modüler sistemleri, yazılım dünyasında da aynen geçerli.

DeepCoder ve benzer şekilde çalışan diğer sistemler, bir yazılımcının çalışmasını benzer şekilde yineliyor. Üstelik kullandığı yapay zeka teknikleri sayesinde sürekli yeni şeyler öğreniyor ve kendini geliştiriyor.

Buna rağmen, bu sistemi geliştiren programcılar, “geniş kapsamlı projelerin, küçük kod parçalarını birleştirerek elde edilemeyeceği” görüşünü savunuyorlar.

Yapay zeka ve robot bilimi alanında yaşanan gelişmeler, bir çok mesleği doğrudan etkilemeye başladı bile. Yazılımcılar da kendi rakiplerini geliştirmek için var güçleriyle çalışıyorlar.

Ahmet Aksoy

Kaynaklar:

Şub 182017
 
1.963 views

TensorFlow ile herkes için makine öğrenmesi

2017 TensorFlow Dev Zirvesi 15 Şubat’ta izleyicileriyle buluştu. Etkinlik, aynı zamanda Mountain View üzerinden canlı olarak da yayınlandı. Bu yayına ait kayıtlara https://events.withgoogle.com/tensorflow-dev-summit/watch-the-videos/#content adresinden erişebilirsiniz. Sözkonusu yayının süresi 8 saat 17 dakikadır.

TensorFlow ile herkes için makine öğrenmesi

2017 TensorFlow Dev Summit

TensorFlow kendi web sayfasında: “sayısal hesaplama için akış grafiklerini kullanan açık kaynaklı bir yazılım kütüphanesi” olarak tanımlanıyor. “Grafik üzerindeki düğümler matematiksel işlemleri temsil ederken, kenarlar, bunların arasında iletişim gerçekleştiren çok boyutlu veri dizilerini (tensor) ifade etmektedir.”

Tensorflow kütüphanesi tek veya birden fazla CPU veya GPU üzerinden çalışabilmektedir. Şu anda kütüphanenin 1.0 sürümü yayınlanmış durumdadır.

Eğer bu kütüphane bilgisayarınızda daha önceden kurulmuşsa sürüm numarasını şu komutla sorgulayabilirsiniz:

TensorFlow kütüphanenizi en güncel (1.0.0) sürümüne yükseltmek istiyorsanız ya da tamamen yeniden kurmak niyetindeyseniz https://www.tensorflow.org/ adresindeki ilgili linkleri takip etmeniz yeterlidir.

Örneğin benim bir önceki TensorFlow sürüm numaram (0.11.0) idi. Bu sürümü yeni sürüme yükseltmek için Ubuntuda sadece şu komut yeterli oldu:

Yeni sürümüm: tensorflow (1.0.0)

Bir çok kütüphanenin yeni sürümüyle ilgili çalışan örnek bulmak çoğu zaman biraz problemlidir. TensorFlow 1.0.0 konusunda şanslıyız. Hemen kodlayıp çalıştırabileceğiniz kodlarla dolu bir github sayfası var: https://github.com/aymericdamien/TensorFlow-Examples. Bazı kodlarda artık kullanılmayan bazı metodlarla karşılaşabilirsiniz. Endişelenmeyin. Hata mesajını araştırdığınızda yanıtlarını hemen bulabiliyorsunuz.

Örneğin, tf.neg() metodu yeni düzenlemede tf.negative() şeklini almış. Yani sadece küçük isim değişiklikleriyle baş etmek zorundasınız.

Kütüphane, örnek veri setlerine de sahip. Elle yazılmış rakam görüntülerinden oluşan “mnist” veri seti, örneklerde yoğun şekilde kullanılıyor. Örneklerin bir çoğunu 8GB belleğe sahip, 4 CPU’lu i5 makineye kurulu Ubuntu 16.04 üzerinde, Python-3.5.2 ile test ettim. Sorunsuz çalışıyorlar.

Eğer bilgisayarınızda GPU kullanma imkanınız varsa, verilen örneklerin sonuçlarını çok kısa sürede alabilirsiniz. Benim gibi sadece CPU kullansanız bile, kodların çalışma süresi aşırı uzun değil.

TensorFlow, “herkesin makine öğrenmesini kolayca uygulayabilmesini” hedefliyor. Bunda da başarılı olacak gibi.

Eğer siz de makine öğrenmesi konularıyla ilgileniyorsanız, TensorFlow’la bir an önce tanışmayı programınıza alın.

Ahmet Aksoy

Kaynaklar:

Ara 062016
 
1.937 views

Golang Notları 002

GOPATH
“Go” diliyle yeni uğraşmaya başlayanların çok sık karşılaştıkları bir hata – uyarı mesajı vardır: “GOPATH tanımı bulunamadı.”

“GOPATH”, go’nun sürekli kullandığı adreslerden biridir. Çünkü paket yönetim ve kullanım işlemleri bu klasör aracılığıyla yapılıyor.

Ubuntu’da bu klasör genellikle $HOME/go veya $HOME/golang olarak açılır. Ben, ikincisini tercih ettim.

Ubuntu’da bu adresi sisteme aşağıdaki gibi tanıtıyorsunuz:

Bilgisayarınızı yeniden açtığınızda aynı komutu vermek zorunda kalmamak için bu komutu $HOME/.bashrc dosyasının içine ekliyorsunuz.

Kontrol için “go env” komutunu kullanabilirsiniz:

Golang Notları 002

Paket kurma golang için çok kolay bir işlem:

Basit bir Scraper (Kazıyıcı) programı

“html” paketinin kullanıldığı bir de örnek vereyim. Örnekle ilgili açıklamaları https://schier.co/blog/2015/04/26/a-simple-web-scraper-in-go.html adresinde bulabilirsiniz:

Kod kolay anlaşılır olduğu için açıklamasını vermeyeceğim. Komut satırına eklediğiniz adresteki tüm tekil linkleri çıktı olarak alıyorsunuz.

Golang Notları 002

İnternet üzerinde çok sayıda “webscraper” örneği var. http://depado.markdownblog.com/2015-08-07-small-example-how-to-use-the-scrape-library-in-go adresindeki örnek kod, Paris’teki bir galeride bulunan eserleri listeliyor.

Ahmet Aksoy

Referanslar:

Kas 102016
 
1.579 views

Golang Notları 001

Bir yazılım dilini öğrenirken nasıl bir yol izlediğinizi bilemiyorum. Benimki biraz parçalı bulmaca çözmek gibidir. Tek bir kaynağı başından başlayarak düzenli şekilde izleyerek öğrenmek gibi bir alışkanlığım yoktur. Ben daha çok oradan buraya atlayarak, o an ilgimi çeken şeylere öncelik vererek öğrenmeyi tercih ederim. Bu amaçla, bulabildiğim, konuya ilişkin her türlü kaynağı bilgisayarıma depolarım. Artık internet yoksunluğu eskisi gibi değil. Ama, yine de kaynakların elimin altında olması bana güven duygusu verir.

Golang Notları

Tüm kaynakları yerel bilgisayara indirmek mümkün değil elbet. Zaten bu kadarına gerek te yok. Şahsen ben bile, bilgisayarıma heyecanla indirmiş olduğum bazı kaynakları aslında hiç kullanmamış olduğumu zaman zaman farkederim. (Özellikle sabit diskimde kıpırdayacak yerin kalmadığı zamanlarda… 🙂 )

İster indirin, isterseniz sadece linklerini not alın. Ya da link deposu olarak benim yazılarımı kullanın. Hiç farketmez!.. Ama zamanınızı iyi değerlendirin ve bulabildiğiniz her türlü kaynaktan olabildiğince yararlanın!

Bazıları için tutarsız gibi gelebilir ama, zaman içinde, bu bulmacanın parçaları yavaş yavaş tamamlanır ve tablo bir bütün olarak karşımıza çıkar. Benimki, bana göre, eğlenceli bir öğrenme yöntemidir.

Şimdi size benim listemdeki linklerden bir kaçını vereyim:

Bunlar da youtube üzerindeki bazı dersler:

Eğer facebook kullanıyorsanız, kısa bir süre önce Savaş Doğan arkadaşımızın kurduğu Golang Türkiye grubuna mutlaka katılın. En azından izleyici olun. Çok şey öğreneceğinizden eminim.

https://github/com üzerinde binlerce golang projesi bulabilirsiniz. Basit bir arama yapmanız yeterli olur.

Golang için uygun IDEler

Bir golang programının kaynak kodunu yazmak için -diğer pek çok dilde olduğu gibi- sadece basit bir metin düzenleyici yeterlidir. Ubuntuda gedit, vim, nano gibi programları kullanabilirsiniz.

Ama yazdığınız kodların otomatik olarak ve düzgün şekilde formatlanmasını isterseniz daha seçici olmanız, en azından go ile ilgili bir eklentiyi (plugini) metin düzenleyicinize yüklemeniz gerekir.

Go için kullanabileceğiniz bazı metin düzenleyici ve IDEler şunlardır:

  • Atom
  • Eclipse
  • Emacs
  • Gedit
  • Geany
  • IntelliJ IDEA
  • Net Beans 8.1
  • Vim
  • VisalStudio Code
  • GNU nano

Yukarıdakilerden “geany”, son sürümlerinde go eklentisi önceden yüklenmiş bir uygulamadır. Diğerlerine “go plugin” eklentisinin yüklenmesi gerekir. Ancak Net Beans 8.2 sürümü için uygun bir go eklentisi yoktur. Bu nedenle, isteniyorsa, sürüm 8.1 kullanılmalıdır.

Kullananların önerilerini dikkate aldığımızda, Intellij IDEA Community sürümü, go için en kullanışlı araçlardan biri olarak karşımıza çıkmaktadır.

Yine çok laf ettik. Arayı biraz kapatalım. Bir komut penceresi açın ve aşağıdaki komutları verin:

Bu komutu go sistem değişkenlerinin durumunu görmek için kullanıyoruz.

Go sürüm numaramızı öğrenmenin yolu.

Golang Notları

“merhaba.go” kod dosyamızı çalıştırma kodu (Aslında hem build, hem de run işlevi vardır.)

“merhaba.go” dosyasındaki kod satırlarının derlenerek çalıştırılabilir hale gelmesini sağlar. Derlenen dosya tek başına çalıştırılabilir hale gelir.

Şimdilik açıklama vermeyeceğim. Ama bu komutla, komut satırından hata denetimi yapabilen bir araca sahip olacaksınız. İleride “errcheck” komutunu oldukça çok kullanacağız.

Beni izlemeye devam edin. Yeni Golang Notları bölümlerinde daha fazla kod olacak.

Ahmet Aksoy

Golang Notları 001