5

Bir sinir ağını eğitmek için bir .NET çerçevesi kullanıyorum ve veri kümem çok sayıda girdi içeriyor.Tüm antrenman kümelerini belleğe yüklemeden Encog sinir ağını eğitmenin bir yolu var mı?

Kullandığım eski çerçeve ile ilgili bazı sorunlar nedeniyle Encog'a geçmeye karar verdim ve ayrıca Encog'un daha zengin göründüğü ve ek özellikler sunduğu için.

Sorunum, Encog'un tüm eğitim verilerini bir kerede bir 2B dizisine yüklediği ve çok büyük bir veri kümesine sahip olduğum için bu bana uygun değil. Bu konuda çalışmayı denedim ve diğer soruları da kontrol ettim (this one gibi ama iyi bir cevap bulamadı).

SQLNeuralDataSet ve akış işlemini destekleyen diğer uygulamalarla çalışmayı denedim, ancak bunların tümü sonunda verileri bellekte (MemoryDataLoader kullanarak) yükler ve bu benim sorunumu çözmez.

Ağımı her seferinde bir öğeyi yükleyip (veya eğitebilirim) bir yolu var mı? Veya bu seçenek Encog'da mevcut değil mi?

Teşekkür

DÜZENLEME

benim ihtiyaçlarına göre kaynak kodunu kopyalayarak ve değiştirerek sona erdi. Temelde, tüm GradientWorker aşağı Process(IMLDataPair pair) gelir ki, belgelere göre:

Süreç tek eğitim seti öğesi.

cevap

1

Encog için veri kaynakları için source code'a bakıldığında, bir dizi seçenek vardır. Buffer/BufferedMLDataSet.cs'a bakın, örneğin:

/// This class is not memory based, so very long files can be used, without 
/// running out of memory. This dataset uses a Encog binary training file as a 
/// buffer. 
+0

Ben 'BufferedMLDataSet.cs' denedim ama gerçekten sorunumu çözmedi. Temel olarak veri setimden girişler ve çıkışlarla bir CSV dosyası oluşturmak için döngü yapmalı, daha sonra CSV dosyasını (büyük olanı) 'EncogUtility.ConvertCSV2Binary' kullanarak ikiliye dönüştürmeli ve ardından bunu aşağıdaki gibi bir eğitim setine yükleyebildim: 'var trainingSet = new BufferedMLDataSet (binaryFile) 've trainingSet'i BackPropagation nesnesine geçirin. Eğitimi tek tek yükleyebilsem çok daha iyi olurdu. – kristoffz

İlgili konular