. İlk (ve en önemlisi), ağlarınızı oluşturma şeklinizdeki bir inceliktir. 2 girişi için (: Şu anda sen
inputs = [Neuron](repeating: Neuron(), count:2+1)
hidden = [Neuron](repeating: Neuron(), count:4+1)
kullandığınız Ama bu da aynı
Neuron
ve aynı
Neuron
tüm
hidden
ile tüm girişler oluşturur, bu yüzden sadece 4
Neuron
ler vardır
düzenli 2 kez tekrarlanan ve bir önyargı nöron) ve 2 gizli için (düzenli tekrar 4 kez ve 1 önyargı için).
Sadece döngü için kullanarak bunu çözebilir: Bir Neuron
çıktısı bunu (bias = from.output*c.weight
) değiştirmek yerine önyargı ekliyoruz hesaplarken
public class Network
{
var inputs:[Neuron] = []
var hidden:[Neuron] = []
var output:Neuron!
public init()
{
for _ in 1...2 {
inputs.append(Neuron())
}
for _ in 1...4 {
hidden.append(Neuron())
}
//print("inputs length: \(inputs.count)")
inputs.append(Neuron(bias: true))
hidden.append(Neuron(bias: true))
output = Neuron()
setupInputHidden()
setupHiddenOutput()
}
...
}
diğer (minör) şeydir, ben Bunun amaca uygun olup olmadığını bilmiyorum ama sonuç etkilenmemiş gibi görünüyor.
kaç gizli katman düğümleri sizinle ağı oluşturuyorsunuz? En az 3 düğüme sahip olduğunuzda 1 gizli katmanı olan XOR'un çok daha iyi çalıştığını fark ettim. – Simon
4 düğümle birlikte 1 gizli katmanım var – Chris
'Bağlantı 'başlatılırken,' weight 'özelliğine aralıkta rastgele bir değer verirsiniz '[0, 1]', ancak ağırlıklar '[-1, 1]' aralığında olmalıdır. 'Self.weight = 2 * we-1' ''' '' '' '' '' '' '' '' '' '' '' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' '=' 'satırını değiştirmeyi deneyin. – dfri