Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 27, 2015 09:03:00

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

PyBrain

Ребята, пытаюсь обучить сеть на распознавание двух фраз, воспользовался вот этой ссылкой для создания 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 (Окт. 27, 2015 09:35:11)

Прикреплённый файлы:
attachment hello1.npy (464 байта)

Офлайн

#2 Окт. 29, 2015 09:38:39

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

PyBrain

Кажется, все таки примеров мало, на выходных запишу и попробую опять свести.

Офлайн

#3 Ноя. 9, 2015 09:51:56

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

PyBrain

Ну что есть еще люби которые протестировали эту библиотеку ?
Как результат развиваются ли нейроны ?

Офлайн

#4 Ноя. 23, 2015 09:08:12

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

PyBrain

sypper-pit
Ну что есть еще люби которые протестировали эту библиотеку ? Как результат развиваются ли нейроны ?
Кстати добавил примеров поиграл с длительностями эпох и вуаля 10% ошибок

Офлайн

#5 Дек. 2, 2015 11:32:21

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

PyBrain

sypper-pit
Ну что есть еще люби которые протестировали эту библиотеку ? Как результат развиваются ли нейроны ?
Есть 100% результат для 7-ми разных команд на основе 20 примеров каждой, но вот распознать другие примеры на основе данной сети нереально. Так же PyBrain не работает на нескольких ядрах и нет реализации GPU, что досадно. Выход один: делаем по паре сотен записей команд разными людьми, и тогда возможно получится обучить сетку за приемлемое время и распознавать речь с помощью данной сети. Но простота реализации программы просто поражает, 50 строк и все готово Это по сравнению с Caffe и Theano просто - ляпота. А еще пойди установи caffe… тот еще геморрой.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version