İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Python Machine Learning-Tensorflow 1.1/Ar-Ge Kulübü

Hacknology - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
10/2015
Nereden:
rm -rf /
Mesajlar:
2.710
Konular:
151
Teşekkür (Etti):
947
Teşekkür (Aldı):
1234
Ticaret:
(0) %
28-01-2018 17:00
#1
Python Machine Learning-Tensorflow 1.1/Ar-Ge Kulübü
Merhaba. Yeni yazımıza hoşgeldiniz.Geçen yazımızda neural net kavramına girmiştik ve temellerinden, mantığından bahsetmiştik. Bu yazımızda işin biraz daha geliştirme kısmına gireceğiz. Real bir data üzerinde çalışmayacağız fakat mantığını elimden geldiğince size aktaracağım.

Şimdi yeni bir script açalım ve kütüphanelerimizi içe aktarmakla başlayalım.
Kod:
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data #bunu daha önceki yazımızda bahsettiğimiz impulsları almak için kullanacağız.
not, eğer ssl hatası alıyorsanız -benim gibi...- bu kodlara küçük bir ilave kod parçacığı eklememiz gerekiyor.

Kod:
try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    pass
else:
    ssl._create_default_https_context = _create_unverified_https_context
Şuan için detaylarına takılmanıza gerek yok, devam edelim.
Bunu yaptıktan sonra input verimizi okumamız gerekecek. Linux ortamı için anlatacağımı daha önce söylemiştim. Verimizi alalım
Kod:
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)
Eğer merak ederseniz one_hot hakkında ayrıntılı bilgiye;
https://www.tensorflow.org/
adresindeki dökümandan ulaşabilirsiniz. mnist kullanma sebebimiz ise datanın zaten doğru formatta gelmesi, bizi uğraştırmıyor. Bu şekilde doğru şeye odaklanacağız. Mnist dataset +60k dan daha fazla veri bulunduran, 0 dan 9 a hepsi 28x28 pixel şeklinde ve 10k test örneği bulundurur.

Şimdi hidden layer'larımızı ayarlayalım. -ufak bir not: eğer bir sistemde 2 yada daha fazla hidden layer varsa buna 'deep neural network' denir.- Bizim sistemimizde 3 tane olacak

Kod:
n_nodes_hl1 = 500
n_nodes_hl2 = 500
n_nodes_hl3 = 500
Şimdi kaç sınıf üzerinde çalışacağımızı ayarlayalım. 0 dan 9 a toplam 10 sınıfımız olacak.
Kod:
n_classes = 10 #tabii ki gerçek datalar 28x28 gibi küçük olmayacak.
batch_size = 100 #burada 100 lük bir yığını neural net'imize gönderdiğimizi ayarladık.
Bu yazımızda kendi datamızla çalışacağız. Kendi datamızı kullanırken genelde Variables denilen yapıdan yardım alırız. Ama aslında daha basit bir yol var, "placeholders". Kendi işlemlerimizi yapma ve kendi hesaplarımızı grafike etmemize yardım edecek.
Kod:
x = tf.placeholder('float', [None, 784])
y = tf.placeholder('float')
Grafikte bildiğimiz gibi bir X'e, bir de Y'ye ihtiyacımız olur. placeholderlarımızı bu şekilde ayarladık. 784 ün sebebi 28 in karesi olması.
Şimdi ilk yazıda şeklini çizdiğimiz modeli oluşturabiliriz işte. Hemen geçelim
Kod:
def neural_network_model(data):
    hidden_1_layer = {'weights':tf.Variable(tf.random_normal([784, n_nodes_hl1])),
                      'biases':tf.Variable(tf.random_normal([n_nodes_hl1]))}

    hidden_2_layer = {'weights':tf.Variable(tf.random_normal([n_nodes_hl1, n_nodes_hl2])),
                      'biases':tf.Variable(tf.random_normal([n_nodes_hl2]))}

    hidden_3_layer = {'weights':tf.Variable(tf.random_normal([n_nodes_hl2, n_nodes_hl3])),
                      'biases':tf.Variable(tf.random_normal([n_nodes_hl3]))}

    output_layer = {'weights':tf.Variable(tf.random_normal([n_nodes_hl3, n_classes])),
                    'biases':tf.Variable(tf.random_normal([n_classes])),}
Bu kodları şuan anlamamak normal. Çünkü weights ve biases kavramlarını halen açıklamadık. Basitçe weight bağlantının gücüyken biases ise bizim yapacağımız tahminin gerçekten uzaklığını temsil eder diyebiliriz kabaca.
Oradaki zincirleme mantığı anlamışsınızdır. hidden1 layer 784 ten alıp nodes'lara taşımakt; sonra hidden2 layer aynısını 1. nodes lardan almakta. Bu noktada geçen yazımızdaki şekil üzerinde biraz oynamamız gerekecek.



Şekildeki gibi! devam edelim şimdi
Şekle dikkat ettiyseniz her impuls her nodes a ulaşıyor. Yani 3 impuls ve 4 nodes varsa elimizde basitçe 12 adet weight oluyor. Bu çaprazlamayı tf.matmul() bizim için yapmakta zaten. Şimdi aldığımız layerları işleyelim.

Kod:
  l1 = tf.add(tf.matmul(data,hidden_1_layer['weights']), hidden_1_layer['biases'])
    l1 = tf.nn.relu(l1)

    l2 = tf.add(tf.matmul(l1,hidden_2_layer['weights']), hidden_2_layer['biases'])
    l2 = tf.nn.relu(l2)

    l3 = tf.add(tf.matmul(l2,hidden_3_layer['weights']), hidden_3_layer['biases'])
    l3 = tf.nn.relu(l3)
Üstteki kod bize yardım edecektir.

Geriye sadece çıktıyı ayarlamak kaldı.
Kod:
 output = tf.matmul(l3,output_layer['weights']) + output_layer['biases']

    return output
Bu modülde şekli oluşturduk. Şimdi işleyelim isterseniz yeni bir modülde
Kod:
def train_neural_network(x):
    prediction = neural_network_model(x)
    cost = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y) )
    optimizer = tf.train.AdamOptimizer().minimize(cost)
Son iki satırda basitçe tahminimiz ve bilinen label arasındaki farkı - düzensizliği(entropiyi) hesapladık ve bunu minimalize edecek şekilde optimize ettik. Şimdi epoch denilen kavramla tanışacağız, epoch'lar basitçe tekrarlardır. Her bir epoch için uyarının bir kez gidip gelmesidir. Örnek vermem gerekirse 1000 örneğimiz ve 500 batch_size ımız olsun. 1 epoch tamamlamak 2 seferde mümkün olacaktır.


Kod:
 
 hm_epochs = 10 #epoch sayısı
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())#grafiğin üzerindeki global değişkenleri ayarlar. /tensorflow/python/ops/variables.py üzerinde kayıtlıdır. İnceleyebilirsiniz

        for epoch in range(hm_epochs):
            epoch_loss = 0
            for _ in range(int(mnist.train.num_examples/batch_size)):
                epoch_x, epoch_y = mnist.train.next_batch(batch_size)#diğer yığını alıyor
                _, c = sess.run([optimizer, cost], feed_dict={x: epoch_x, y: epoch_y})
                epoch_loss += c

            print('Epoch', epoch, 'completed out of',hm_epochs,'loss:',epoch_loss)

        correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))

        accuracy = tf.reduce_mean(tf.cast(correct, 'float'))
        print('Accuracy:',accuracy.eval({x:mnist.test.images, y:mnist.test.labels}))#bu kod bloğu da başarı oranımızı gösteriyor.

train_neural_network(x)
Kodumuz bu kadar, çalıştırdığımızda;


Kod:
hacknology@hacknomeister:~/Masaüstü/python-neuralnet$ python3 dene.py
Extracting /tmp/data/train-images-idx3-ubyte.gz
Extracting /tmp/data/train-labels-idx1-ubyte.gz
Extracting /tmp/data/t10k-images-idx3-ubyte.gz
Extracting /tmp/data/t10k-labels-idx1-ubyte.gz
Epoch 0 completed out of 10 loss: 1690835.2480316162
Diye uzanan bir çıktı alacağız. Sonraki yazımızda görüşmek üzere :* hoşçakalın

Kaynakça:
youtube/sentdex
https://www.tensorflow.org/
https://stackoverflow.com/
https://www.mathworks.com/
https://learningtensorflow.com/
https://www.packtpub.com
https://www.quora.com/

Önceki dersler:
http://www.turkhackteam.org/python/1...ge-kulubu.html
http://www.turkhackteam.org/python/1...ml#post7730887
http://www.turkhackteam.org/python/1...ge-kulubu.html
http://www.turkhackteam.org/python/1...ge-kulubu.html
---------------------
I surrender my soul
Odin hear my call

flag{Bur4si_b1r_0yun_park1}

hacknology@hacknologyroot:~/
ATABÖRÜ - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2017
Nereden:
Ötüken
Yaş:
82
Mesajlar:
3.370
Konular:
303
Teşekkür (Etti):
950
Teşekkür (Aldı):
908
Ticaret:
(0) %
28-01-2018 17:04
#2
EywAllah Sağolasın Eline Sağlık
---------------------
Ey Türk milleti! Kendine dön! Sen yükseltmiş Bilge Kağan'ına, hür ve müstakil ülkene karşı hata ettin, kötü duruma düşürdün. Milletin adı, sanı yok olmasın diye Türk milleti için gece uyumadım, gündüz oturmadım. Kardeşim Kül Tegin ve iki şad ile ölesiye bitesiye çalıştım.
Delta Force - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2017
Nereden:
Türkiye C.
Mesajlar:
634
Konular:
35
Teşekkür (Etti):
112
Teşekkür (Aldı):
631
Ticaret:
(0) %
28-01-2018 17:04
#3
Eline Sağlık
---------------------
Parmak Gökyüzünü Gösterdiğinde Yalnızca Aptallar Parmağa Bakar
TCU
TCU - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2018
Nereden:
|<Mars>|
Yaş:
22
Mesajlar:
815
Konular:
65
Teşekkür (Etti):
1
Teşekkür (Aldı):
111
Ticaret:
(0) %
28-01-2018 17:15
#4
baya yararlı konu olmuş eline sağlık hocam.
---------------------


Yardımım Dokunduysa Teşekkür Butonuna Tıklaman Ricam Olur.


┏╋━━━━━━━━━━━━◥◣◆◢◤━━━━━━━━━━━╋┓
~《 Ö N C E ● V A T A N 》~
~《 S O N R A 》~
~《 T Ü R K ¤ H A C K ¤ T E A M 》~
┗╋━━━━━━━━━━━━◥◣◆◢◤━━━━━━━━━━━╋┛

<?php echo 'c2sv.xyz'; ?>

bozkurt0607 - ait Kullanıcı Resmi (Avatar)
Tamamen Forumdan Uzaklaştırıldı
Üyelik tarihi:
07/2017
Nereden:
ANGARA
Yaş:
18
Mesajlar:
518
Konular:
63
Teşekkür (Etti):
386
Teşekkür (Aldı):
185
Ticaret:
(0) %
28-01-2018 17:25
#5
Eline sağlık
Hacknology - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
10/2015
Nereden:
rm -rf /
Mesajlar:
2.710
Konular:
151
Teşekkür (Etti):
947
Teşekkür (Aldı):
1234
Ticaret:
(0) %
28-01-2018 18:12
#6
Herkese çok teşekkürler
---------------------
I surrender my soul
Odin hear my call

flag{Bur4si_b1r_0yun_park1}

hacknology@hacknologyroot:~/
k3~
k3~ - ait Kullanıcı Resmi (Avatar)
Özel Üye
Üyelik tarihi:
10/2015
Mesajlar:
2.881
Konular:
202
Teşekkür (Etti):
1743
Teşekkür (Aldı):
3389
Ticaret:
(0) %
29-01-2018 15:18
#7
Eline koluna sağlık
Hacknology - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
10/2015
Nereden:
rm -rf /
Mesajlar:
2.710
Konular:
151
Teşekkür (Etti):
947
Teşekkür (Aldı):
1234
Ticaret:
(0) %
30-01-2018 01:55
#8
Teşekkürler hocam
---------------------
I surrender my soul
Odin hear my call

flag{Bur4si_b1r_0yun_park1}

hacknology@hacknologyroot:~/

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı