Merhaba ve bu Python öğreticisine hoş geldiniz.
Pekala, bu yüzden önümüzdeki topraklarda çok heyecanlıyız.
Yapay sinir ağını yapay zekanın kalbinde olacak ve bu
da 90 yaşındayken oynayacakları eylemi geri getireceğimiz yapıyı yaratarak başlayacağız.
O halde bunu yapalım.
Dolayısıyla, sinir ağımızın objektif olmasını istediğimizden sınıf yapacağız.
Bunun sebebi çok daha kullanışlı olması.
Sınıfta inşa etmek istediğimiz bir şeyin modeli olduğunu biliyorsun.
Bir sinir ağı kurmak istiyoruz ve sınıfta bulunacak birtakım talimatlar
vermemiz gerekiyor.
Ve bu derste iki işlev yapacağız.
Önce sınıfı oluştururken her zaman ortaya çıkan fonksiyon olan init işlevi.
Ve bu temel olarak nesnenizin sinir ağı değişkenini tanımlar.
Nesneye bağlı değişkenleri global değişkenlerin aksine biliyorsunuz.
girdi durumlarının kodlanmış vektörü için beş boyuta sahip olduğumuzdan beş girdi
nöronundan oluşan girdi katmanını tanımlayan yeni ağın mimarisini tanımlayacak olan bu işleve ait.
Ve bu nedenle bu,
Sonra bazı gizli katmanları tanımlayacağız.
Belki bir gizli katmanla başlayacaksınız ve ardından sinir ağının bazı diğer mimarilerini
denemekten memnuniyet duyacaksınız.
Ve tabii ki, her seferinde oynayabileceğimiz olası eylemleri içerecek çıktı
katmanı ile sonuçlanacağız.
Dolayısıyla bu işlevi tam olarak yapacağız.
olacak ve sinir ağındaki nöronları aktive edecek bir işlev yapacağız.
Ve sonra sınıfın içinde ileriye dönük bir işlev
Bunun sinyallerin aktive olacağını biliyorsunuz ve bu nedenle düzeltilmiş bir aktivasyon fonksiyonu kullanacağız
çünkü elimizde sadece doğrusal olmayan bir problemle uğraşıyoruz ve bu düzeltilmiş fonksiyon doğrusallığı bozuyor.
Ama çoğunlukla, bu Ford işlevini ağın çıktıları olan q değerlerini döndürmek için yapıyoruz.
Ancak her eylem için bir anahtar değerimiz var.
Ve daha sonra anahtar değerlerin maksimumunu alarak ya da yumuşak bir Max yöntemi kullanarak son
işlemi geri alacağız.
Bunu daha sonra göreceğiz.
Bu dersin sonunda, init işlevini uygulayarak başlayacağız ve bir
sonraki işlevi ileri işlevini uygulayacağız.
O halde bunu yapalım.
Önce sınıfımızı tanıtmamız gerekiyor.
Bu yüzden sınıf ile başlıyoruz ve sınıf olarak ağa diyebileceğimiz bir isim veriyoruz.
Ve sonra bu ağ sınıfında kalıtım denilen ve yalnızca bir üst sınıfın
tüm araçlarından miras kalacak bir nesne programlama tekniği kullanacağım.
Yapacağımız ağ sınıfımız, daha büyük bir sınıfın çocuk sınavıdır.
Ve o modül.
Dolayısıyla, sadece bu modül sınıfının tüm araçları bir sinir ağı uygulamak için elbette araçları
miras almak için.
Bu, mirasa dönüşen nesne tabanlı programlamada çok güçlü ve evrim hüneridir.
Ve şimdi şu ana sınıfın bu modülünden kalıtım.
Pekâlâ, şimdi sınıfın içine girmeye hazırız.
Bu yüzden iki kez enter tuşuna basacağım, çünkü iki işlev yapacağız ve son işlevi
ile başlıyoruz.
Yani init işlevi, bu şekilde bu derste iki, sonra da onunla adlandırmamız gerekir.
Ve sonra şunu tekrar söyleyelim ki, sadece Python sözdizimi bunun nasıl yapılacağı gibi görünüyor.
Ve sonra argümanları koymamız gerek.
Bu yüzden üç argümanımız var.
Birincisi, benlik ve benlik olan zorunlu bir argümandır.
Bu sınıftan yaratılacak nesneye atıfta bulunan, onun hakkında yapmak istediğimiz gizem
yok.
Bu sınıfta olduğumuzu biliyorsun.
Sanki bu sinir ağı kurmak istediğimiz bazı talimatlar gibidir.
Ve sonra sınıf hazır olduğunda, istediğimiz kadar çok ağ yapabiliriz.
Ve bu yeni ağların her biri bu sınıfın bir nesnesi olacak ve
nesneyi başka bazı amaçlar için kullanacağımızdan, ancak nesnenin değişkenleri ne olacak ve Spudis'e, bu
ben'i burada kullandığımızı belirtmek için kullanıyoruz. Nesneyi kastediyorsun.
Dolayısıyla, nesneden kullanılabilirliği kullanmak istediğimde, nesnenin değişkeni olduğunu belirtmek için
değişkenin önüne kendini kullanacağım.
ve çıktı nöronlarının sayısı olan iki argüman daha var.
Pekâlâ, bu ilk argüman ve sonra elimizde girdi nöronlarının sayısı
Dolayısıyla girdi nöronlarının sayısı girdi büyüklüğü ve aslında beştir, çünkü girdi
vektörlerimizin beş yönü üç sinyale, artı eksi yöne çevirme, çevrenin
bir durumunu tanımlayan kodlanmış vektörler vektörlerine sahiptir.
Bu beş değer çevre ortamını tanımlamak için yeterlidir.
Daha az değer veya daha fazla değer düşünebilirdik ama denedim ve aslında mantıklıydı,
çünkü aslında bizden solda biri doğru, sağdan bir işarete ihtiyacımız var.
zaman bu yönlendirme ve eksi yönlendirme size aittir. Ulaşmaya çalıştığınız hedefi takip edin.
Arabayı ne zaman kullanacağımızı biliyorsunuz, 360 araçlık bir sinyal için Google araçlarının tepesindeki sinyaller gibi,
üç sensörle tamamen kendi kendine çalışabildiğimiz sinyalleri elde edebiliyorduk ve o
Ve elbette ki ağımızın eylemlere karşılık gelen çıkış nöronları var ve üç olası eylemin
sola doğru gittiğini ya da doğru gittiğini söylüyoruz.
Ve bu yüzden onu ve eylemi arayacağım ve üç tane olacak.
Tamam.
Şu ana kadar sadece girdilere ad vermek zorundayız ve bu voleybolu, sinir ağı içindeki koşulları
yapmak için kullanacağız.
Pekâlâ, o zaman meşale hüneriyle başkasını kullanarak başlayın; bu hüner, aslında modülden
devralan bir işlev olan bir süper işlevdir.
Bu yüzden modülü miras almak için kalıtım kullanmak zorunda kaldık.
Kullanan ilk kişi budur.
Ve temel olarak, çok daha verimli olan modül araçlarını kullanabilmek için yalnızca bu
süper hile süperfonksiyonunu kullanıyoruz.
Ve süper fonksiyonun içinde öncelikle şebekeyi belirtmeliyim.
sınıfımız bu, üst sınıf modülünden ve daha sonra nesnemizden miras kaldığı için.
Bu, bildiğimiz ağ eğitim
Ve sonra sadece onu ekledim ve tam olarak adlandırdığımız şekilde böyle bir işlevi görüyoruz.
Pekâlâ, elimdeki bütün araçları kullanmak için olan bir hüner.
Ve o modülde girdi katmanını belirleyen bir sonraki adıma geçebiliriz.
Temelde ne yapmam gereken nesneye eklenecek yeni bir değişkeni tanıtmak ve
bu değişken giriş nöronlarının sayısını içerecektir.
Dolayısıyla girdi boyutu ile karıştırılmamalıdır girdi boyutu, son fonksiyonun argümanıdır.
bu, nesneye eklenen değişken değil, nesne ile ilişkili değişken.
Ancak
Az önce bahsettiğim gibi bunun yerine nesne ile ilişkili olduğunu belirtmeliyiz ki bir öğretilen ben
kullanıyoruz ve şimdi nesneye bağlı olan bu ilk değişkene bir ad veriyoruz.
Ve böylece girdi olarak aynı adı verebiliriz.
Girdi boyutu diyebiliriz ve girdi boyutu olan bir fonksiyonun argümanlarına eşit olduğunu söyleyeceğiz.
Tamam.
Her sefer ağ sınıfından bir nesne oluşturuyorum ve girdi boyutunu belirtiyorum,
örneğin 5 koyuyorum.
Burada 5, dolayısıyla nesnemizin giriş boyutu değişkeni 5 değerine sahip olacak, çünkü burada
bu giriş boyutu 5 olacak ve bu nedenle yeni ağımız giriş katmanında 5 giriş
nöronuna sahip olacak.
Tamam.
Ve o zaman nesnelere eklemek istediğimiz diğer değişken için de aynı şey geçerli.
Ve tahmin edebileceğiniz gibi, bunun çıktı nöronlarının sayısı için bir değişken olacağı tahmin ediliyor.
Ve şunu söylemek gerekirse, cisimimizi kendimiz alıyoruz ve sonra onu ve eylem olarak adlandıracağımız nesnenin
bu ikinci değişkenine bir isim veriyoruz.
Ve bu, çıktı nöronlarının sayısı olan eylemler sayısı göz önüne alındığında, bu argümana
eşit olacaktır.
Ve bu yüzden, bunu fiili eylemle eşit olarak belirledik ve eylem üçe eşit olacak.
Dolayısıyla, bir ağa nesnemize eklenen değişken ve eylem değerinin üçünü alacaktır.
Aslında burada, tanımlanmamış diyor diye uyarı görebiliriz.
Ve sonra da, çünkü burada kullanıyoruz.
Ve sonra kısayol.
Ve burada bir kısayol kullanmamız gerekiyor.
Ve bizim başlangıç ​​için ve Mudgal için ve sonra kaybolur.
İşte başlıyoruz.
Mükemmel.
Şu anda yeni uyarılarımız var, burada verilen tüm uyarılar, yalnızca içe aktardıklarının henüz kullanılmadığını
belirtmek içindir.
Sorun değil, daha sonra kullanacağız.
Pekala, nesne için tanımlamak istediğimiz başka iki değişkenimiz var.
tam bağlantılar, sinir ağımızın farklı katmanları arasındaki tam bağlantı olacaktır.
Ve bu
Dolayısıyla şu anda dünyada tek bir kafadan oluşan bir sinir ağı oluşturmak istediğimiz için
iki tam bağlantı olacak.
Giriş katmanı ile gizli katman arasında bir ilk tam bağlantı olacak.
Ve tepe ile çıkış katmanı arasında bir saniye tam bağlantı.
Bu yüzden, ilk tam bağlantıyla başlayalım.
Onu SE1 olarak adlandıracağız Ve yine ben'i, FC birinin bunu çözmek için nesnemin bir değişkeni olduğunu belirtmek
için kullanıyorum.
FC birine eşit olacak.
Ve şimdi modülde N'yi kullanıyoruz ve doğrusal R diye bir fonksiyon kullanacağız ve bu tam
olarak nöronlar ile girdi katmanı arasındaki tam bağlantıyı buradaki nöronlara yapmak için kullanacağız.
Tam bağlantıyla ne demek istiyorum.
Bu, girdi katmanının tüm nöronlarının hepsinin orada Buradaki tüm nöronlara bağlanacağı
anlamına gelir.
Ve bu bağlantıyı yapmak için bazı doğruları koymamız gereken bu doğrusal fonksiyonu kullanıyoruz.
Ve gördüğünüz gibi bu argümanlar özelliktedir.
İlk yasadaki nöronların sayısı, bağlamak istediğiniz ikinci katmanın nöron
sayısı olan özelliklere bağlamak istediğiniz katmanlardır; sağdaki katman
ve bisikletin gerçek katmanıdır.
Dolayısıyla bisiklet doğrudur, beklemek zorunda kalacağımız koşuya sadece bir miktar ağırlık değil, her bir
katman için bir önyargı koymak için önyargı koymamızı sağlayacağız.
Ve çok iyi, neye girdiğimizi görelim.
Özelliklerin ilk argümanı, giriş katmanındaki giriş nöronlarının sayısıdır.
Ve işte burada.
Bu aslında yanlış.
Bu, daha sonra üç sinyalli yönelim ve Mannus yönelimi ile mücadele edebilecek
init fonksiyonunun argümanıdır.
İşte başlıyoruz.
İlk argümanlar ve koyma boyutu ve daha sonra ikinci argüman özellikleri olduğunda ikinci katmanda
olmasını istediğimiz nöron sayısıdır.
İlk katmana tamamen bağlı ikinci katman.
Ve şimdi soru, bu gizli katmanda kaç tane nöron istediğimizdir.
Pekala, çok fazla parametre eğitimi aldım.
Bir sürü deney yaptım.
Yaptığımız şey bu veya daha derinlerde yaptığımız şey bu.
Genel olarak, spesifik problemimiz için en iyi sinir ağı ne olacağını görmek için çok fazla
deney yapıyoruz.
Ve bu yüzden birçok değeri deniyorum ve 30 30'luk koşu gizli bir katmandayken seçtim ve bu sayı
ile bazı oldukça iyi sonuçlar elde edeceğimi göreceksiniz ancak sinir ağının mimarisini
değiştirmekte özgürsünüz.
Onunla oynamaktan çekinmeyin.
Sadece burada ve orada nöron sayısını değiştiremezsiniz, ancak belki de daha iyi bir araba elde etmek
için daha fazla katman ekleyebilirsiniz, ancak 30 hinna nöronu bize iyi bir sinir ağı ve iyi bir
neden getirecektir.
İşte biz de öyle yapacağız.
Ve işte gidiyoruz.
Bu doğrusal fonksiyon ile gerçekten ilk bağlantısımız var.
Giriş katmanı ile gizli bacak arasında bağlantı kuruyoruz.
Ve şimdi, gizli katman ve çıktı katmanı arasındaki tam bağlantı olan ikinci tam
bağlantıyı yapma zamanı.
İşte gidiyoruz.
Bu ikinci tam bağlantıyı C2'de arayacağız.
Oraya gidiyoruz.
Ve yine de Saphir'i kullanarak daha fazla nesne için kullanılabilir.
Ve sonra tekrar kullanıyoruz.
Aslında bunu kopyalayabiliriz çünkü N modülünde ve daha sonra doğrusal işlev kullanacağız.
Fakat sonra argümanları elbette değiştirmeliyiz.
Aynı ilk şey, bağlantı ilk katmanında sahip olacağımız nöronların sayısıdır.
İşte orada gizli var.
Ve bu nedenle bu 30 ve daha sonra ikinci argüman, bağlantı ikinci katmanındaki
nöronların sayısıdır ve çıktı katmanına ve çıktıya karşılık gelir.
Ve daha sonra üç olacak gerçek nöronlar, çünkü üç olası işlemi var, ancak şimdiye
kadar tanımladığımız isimleri kullanmamız gerekiyor.
argümanının adı budur ve bundan dolayı burada giriyoruz ve eylem ve oraya gidiyoruz.
Init işlevinin
Her şeyden önce tuple bağlantılarımız yeniden.
Ve ikincisi İsrail'in herhangi bir işlevi.
Bu nedenle, ağ sınıfından bir nesne oluşturduğumuzda nesnemizi başlatacağız.
Ve en kısa sürede bir nesne yarattığımızda değişkenlerin tümü için bu değişkenler boyut ve tepki girdiler.
Siz ve ikiniz tanımlanacaktır.
Ve yarattığımız her nesne için hayvan ağı mimarisini alacağız.
beş girdi nöronunun 30 sinyallenmiş nöron ve üç çıktı nöronunun sinir ağı ile uyumlu olacak.
Her nesne,
İşte gidiyoruz.
Bu birinci işleve son verildi ve şimdi ileri fonksiyon olan ikinci
işleve geçebiliriz ve doğrultucu aktivasyon işlevini kullanarak sinir ağındaki nöronları aktive etmek
için kullanılacak ve çoğunlukla sonuçta küp değerlerine dönecektir. sadece bir ağın çıktıları.
Bu yüzden, bir sonraki öğreticide ve o zamana kadar bunu yapmak için sabırsızlanıyorum.