Найти - Пользователи
Полная версия: PyBrain
Начало » Центр помощи » PyBrain
1
noob_saibot
Ребята, пытаюсь обучить сеть на распознавание двух фраз, воспользовался вот этой ссылкой для создания mfcc-коэффициентов их собственно и подаю на вход сети. При validationProportion=0.25 сеть сводится, но с большой ошибкой, при значении 0.1 за 3 дня не сошлась. Вопрос: происходит это из-за сильной разрозненности данных или алгоритм обучения и архитектура сети неверные?

import pybrain
from pybrain.datasets import *
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer
import pickle
import numpy as np
def main():
    ds = SupervisedDataSet(12, 1)
    hello1 = np.load("C://Python27/QPSK/numpyarray/hello1.npy")
    hello2 = np.load("C://Python27/QPSK/numpyarray/hello2.npy")
    hello3 = np.load("C://Python27/QPSK/numpyarray/hello3.npy")
    bugs = np.load("C://Python27/QPSK/numpyarray/bugs.npy")
    b1 = np.load("C://Python27/QPSK/numpyarray/bye-bye-1.npy")
    b2 = np.load("C://Python27/QPSK/numpyarray/bye-bye-2.npy")
    b3 = np.load("C://Python27/QPSK/numpyarray/bye-bye-3.npy")
    b4 = np.load("C://Python27/QPSK/numpyarray/bye-bye-4.npy")
    b5 = np.load("C://Python27/QPSK/numpyarray/bye-bye-5.npy")
    b6 = np.load("C://Python27/QPSK/numpyarray/bye-bye-6.npy")
    ds.addSample( (hello1[0:12]), (0,))
    ds.addSample( (hello2[0:12]), (0,))
    ds.addSample( (hello3[0:12]), (0,))
    ds.addSample( (b1[0:12]), (1,))
    ds.addSample( (b2[0:12]), (1,))
    ds.addSample( (b4[0:12]), (1,))
    ds.addSample( (b5[0:12]), (1,))
    ds.addSample( (b6[0:12]), (1,))
    net = buildNetwork(12, 24, 1, bias=True)
    try:
        f = open('_learned2', 'r')
        net = pickle.load(f)
        f.close()
    except:
        trainer = BackpropTrainer(net, ds, learningrate = 0.01, momentum = 0.99, verbose = False)
        errors = trainer.trainUntilConvergence(dataset=None, maxEpochs=None, verbose=None, continueEpochs=10, validationProportion=0.25)
        f = open('_learned2', 'w')
        pickle.dump(net, f)
        f.close()
    
    print np.round(net.activate(hello1[0:12])[0]), np.round(net.activate(hello2[0:12])[0]), np.round(net.activate(hello3[0:12])[0])
    print np.round(net.activate(bugs[0:12])[0])
    print np.round(net.activate(b3[0:12])[0])
    print np.round(net.activate(b1[0:12])[0]), np.round(net.activate(b2[0:12])[0]), np.round(net.activate(b4[0:12])[0]), np.round(net.activate(b5[0:12])[0]), np.round(net.activate(b6[0:12])[0])
if __name__ == "__main__":
    main()
Примеры numpy массивов прикладываю.
noob_saibot
Кажется, все таки примеров мало, на выходных запишу и попробую опять свести.
sypper-pit
Ну что есть еще люби которые протестировали эту библиотеку ?
Как результат развиваются ли нейроны ?
noob_saibot
sypper-pit
Ну что есть еще люби которые протестировали эту библиотеку ? Как результат развиваются ли нейроны ?
Кстати добавил примеров поиграл с длительностями эпох и вуаля 10% ошибок
noob_saibot
sypper-pit
Ну что есть еще люби которые протестировали эту библиотеку ? Как результат развиваются ли нейроны ?
Есть 100% результат для 7-ми разных команд на основе 20 примеров каждой, но вот распознать другие примеры на основе данной сети нереально. Так же PyBrain не работает на нескольких ядрах и нет реализации GPU, что досадно. Выход один: делаем по паре сотен записей команд разными людьми, и тогда возможно получится обучить сетку за приемлемое время и распознавать речь с помощью данной сети. Но простота реализации программы просто поражает, 50 строк и все готово Это по сравнению с Caffe и Theano просто - ляпота. А еще пойди установи caffe… тот еще геморрой.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB