Django Kullanarak Derin Öğrenme Tabanlı Web Uygulaması Oluşturma
Giriş
Bu blog da , Django framework’ ünü kullanarak Derin Öğrenme modeli nasıl uygulanır bahsedeceğim?
Bu Django Geliştirme öğreticisi serisinin ilk bölümünde Derin Öğrenme modellerini uygulamak için bir Django REST uygulaması oluşturmayı öğreneceğiz. İkinci bölümde, bu Django Rest Framework’ü Apache kullanarak nasıl barındıracağımızı göreceğiz.
Django REST Framework Nedir ?
Django, hızlı geliştirmeyi ve temiz, pragmatik tasarımı teşvik eden üst düzey bir Python Web Geliştirme Framework’ üdür. Deneyimli geliştiriciler tarafından oluşturulmuştur ve Web geliştirmenin zorluklarının çoğunu halleder. Aynı zamanda ücretsiz ve açık kaynaklıdır.
Django REST Framework, Derin Öğrenme modellerinin uygulanmasında kullanılabilecek Web API’leri oluşturmak için güçlü ve esnek bir araç setidir. Django REST çerçevesinin yardımıyla, karmaşık derin öğrenme modelleri yalnızca bir API uç noktası çağırarak kolayca kullanılabilir.
Kurulum
Django, basit bir pip komutu ile kurulabilir.
$ pip install django
- Django Projesi Oluşturun
Yeni bir projeye başlamak için, projeyi oluşturmak istediğiniz dizine $ cd, ardından aşağıdaki komutu yazın;
$ django-admin startproject [proje_adi]
Projemiz oluşturulduktan sonra dosya yapısı şu şekilde görünecektir.
Peki bu dosyalar ne işe yarıyor?
manage.py: Oluşturduğumuz Django projesiyle çeşitli şekillerde etkileşim kurmamızı sağlayan bir komut satırı yardımcı programıdır
__init__.py: Python’a bu dizinin bir Python paketi olarak kabul edilmesi gerektiğini söyleyen boş bir dosyadır.
settings.py: Django proje ayarlarının yapılandırıldığı dosyadır.
urls.py: Bu Django projesi için URL bildirimlerinin yapıldığı dosyadır.
wsgi.py: Projemize hizmet etmek için WSGI uyumlu web sunucuları için bir giriş noktası.
Yukarıdaki adımları doğru bir şekilde izlediyseniz ve dosyalarınız Şekil 2' deki gibi görünüyorsa, komut istemi ekranınıza
python manage.py runserver
yazın ve ardından komut isteminde görünen bağlantıyı ( http://127.0.0.1:8000/ ) açın. Şekil 3' teki görüntü ile karşılaştıysanız projeniz başarıyla oluşturulmuştur.
2. Django Uygulaması Oluşturun
Şimdi bir Django uygulaması oluşturuyoruz. Django’da yazılan her uygulama, belirli bir kuralı izleyen bir Python paketinden oluşur. Django, uygulamanın temel dizin yapısını otomatik olarak oluşturan ve dizinler oluşturmak yerine kod yazmaya odaklanmamızı sağlayan bir yardımcı programla birlikte gelir.
Aşağıdaki komutu kullanarak modelimizi dağıtmak için bir uygulama oluşturacağız.
$ cd deploy
$ python manage.py startapp [uygulama_adi]
Uygulama oluşturulduktan sonra, settings.py’ a gidin ve aşağıda gösterildiği gibi rest_framework ve uygulama adınızı, INSTALLED_APPS listesine ekleyin.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'[uygulama_adiniz]'
]
Django projemiz için yapılandırmayı tamamlayalım. Ana proje klasörümüzün içinde, ‘templates’ adıyla boş bir klasör oluşturun. Bu klasör, projemizde kullanacağımız tüm html dosyalarını tutacaktır.
Şimdi setting.py dosyasını açın ve ‘templates’ (veya html dosyalar klasörünüze verdiğiniz adı) ‘TEMPLATES’ listesindeki vurgulanmış ‘DIRS’ listesine ekleyin.
3. Derin Öğrenme Modeli Oluşturma
Bu bölümde kullanacağımız derin öğrenme modelini oluşturacağız. Uygulamamızda “tahmin” adında yeni bir dosya oluşturuyoruz. Bu dosyanın içine “tahmin_model” adında bir python dosyası açıyoruz ve kullanacağımız derin öğrenme algoritmasını yazıyoruz ve dosyayı save komutu ile kaydediyoruz.
import pandas as pd
import tensorflow.keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# Veri setini dataset değişkenine yükler.
dataset = pd.read_csv('[veri_seti_adi].csv')
dataset_fr = pd.DataFrame(data=dataset)
giris = dataset_fr.iloc[:,0:11]
cikis = dataset_fr.iloc[:,11]
# Keras modelini tanımlar.
model = Sequential()
model.add(Dense(256, input_dim=11, activation='relu'))
model.add(Dense(256, activation='relu'))
model.add(Dense(256, activation='softmax'))
# Keras modeli derlenir.
model.compile(loss='sparse_categorical_crossentropy', optimizer=tensorflow.keras.optimizers.Adam(), metrics=['sparse_categorical_accuracy'])
# Keras modelini veri setine sığdırır.
batch_size=32,validation_split=0.13)
model.fit(giris, cikis, epochs=150, batch_size=1,validation_split=0.20)
# Keras modelini değerlendirir.
_, accuracy = model.evaluate(giris, cikis)
print('Accuracy: %.2f' % (accuracy*100))# Keras modelini kaydeder.
model.save("tahmin.h5")
4.Derin Öğrenme Modelini Kullanma
“ templates” klasörünün içinde bir index.html dosyası oluşturun. Bu index.html ana sayfamız olacak ve kullanıcımızdan girdi almak için kullanacağımız formumuz olacak.
< !DOCTYPE>
< html lang = "en" dir = "ltr" >
< head >
< meta charset = "utf-8" >
< title > Anasayfa < / title >
< / head >
< body >
< h1 > Tahmin < / h1 >
< form action = "{% urls 'result' %}" >
{ % csrf_token %}
< p > Parametre 1 < / p >
< input type = "text" name = "p1" >
< br >
< p > Parametre 1 < / p >
< input type = "text" name = "p1" >
< br >
< p > Parametre 1 < / p >
< input type = "text" name = "p1" >
< br >
< p > Parametre 1 < / p >
< input type = "text" name = "p1" >
< br >< input type = "submit" value = 'Tahminleri Getir' >
< / form >
< / body >
< / html >
Kullanıcıya sonuçların gösterileceği result.html dosyamızı da yine “templates” klasörü altında oluşturuyoruz.
< !DOCTYPE
html >
< html
lang = "en"
dir = "ltr" >
< head >
< meta
charset = "utf-8" >
< title > Sonuc< / title >
< / head >
< body >
< h1 > Tahmin< / h1 >
{{sonuc}}
< / body >
< / html >
Şimdi sunucu tarafında önceden eğitilmiş modeli kullanacak bir kod yazacağız. Uygulamamız içindeki views.py dosyamıza geliyoruz ve istekleri yakalayacağımız index adında bir method yazıyoruz.
from django.shortcuts import render
import numpy as np
from tensorflow.keras.models import load_model
# Gelen istekleri yakalayabilmek için mutlaka her viewda request parametresinin olması lazımdır.
def index(request):
if request.method=="GET":
return render(request,'index.html')
elif request.method=="POST":
p1=request.POST.get("p1")
p2 = request.POST.get("p2")
p3 = request.POST.get("p3")
p4 = request.POST.get("p4")
sonuc=prediction(p1,p2,p3,p4)
# Sonuç ekran gönderilir.
context={
"sonuc": sonuc
}
return render(request,'result.html',context)
def prediction(p1,p2,p3,p4):
# Sınıflandırılmak istenen dizi reshape edilir.
x = np.array([int(p1),int(p2),int(p3),int(p4)]).reshape(1, 4) model = load_model('teshis/tahmin/tahmin.h5');
# Modelde sınıflandırılacak dizi gönderilir.
prediction = model.predict_classes(x)
return prediction
“ {{}} “ Etiketlerinin içinde, sonucumuzu içeren anahtarın adını belirtiriz (bizim durumumuzda sonuçtur).
Son olarak sayfalarımızı ana dizin içindeki urls.py dosyasına kaydediyoruz.
5. Sonuç
Tüm bu adımları tamamladıktan sonra, sunucuyu durdurmak için komut isteminizde CTRL + C tuşlarına basın ve ardından
python manage.py runserver
komutunu kullanarak yeniden başlatın. Şimdi tarayıcınızda bağlantıyı yeniden açın. Bu sefer varsayılan sayfa, girdi formumuzun bulunduğu index.html sayfası olacaktır.
İlgili verileri doldurup formu gönderdikten sonra, giriş verileriniz için tahmini görüntüleyen result.html sayfasına yönlendirileceksiniz.
Django hakkında daha fazla bilgi edinmek istiyorsanız, Django belgelerine bakın.
Umarım faydalı bir yazı olmuştur. Şimdiden herkese kolay gelsin.