Форум сайта python.su
Ребята, пытаюсь обучить сеть на распознавание двух фраз, воспользовался вот этой ссылкой для создания 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()
Отредактировано noob_saibot (Окт. 27, 2015 09:35:11)
Прикреплённый файлы:
hello1.npy (464 байта)
Офлайн
Кажется, все таки примеров мало, на выходных запишу и попробую опять свести.
Офлайн
Ну что есть еще люби которые протестировали эту библиотеку ?
Как результат развиваются ли нейроны ?
Офлайн
sypper-pitКстати добавил примеров поиграл с длительностями эпох и вуаля 10% ошибок
Ну что есть еще люби которые протестировали эту библиотеку ? Как результат развиваются ли нейроны ?
Офлайн
sypper-pitЕсть 100% результат для 7-ми разных команд на основе 20 примеров каждой, но вот распознать другие примеры на основе данной сети нереально. Так же PyBrain не работает на нескольких ядрах и нет реализации GPU, что досадно. Выход один: делаем по паре сотен записей команд разными людьми, и тогда возможно получится обучить сетку за приемлемое время и распознавать речь с помощью данной сети. Но простота реализации программы просто поражает, 50 строк и все готово Это по сравнению с Caffe и Theano просто - ляпота. А еще пойди установи caffe… тот еще геморрой.
Ну что есть еще люби которые протестировали эту библиотеку ? Как результат развиваются ли нейроны ?
Офлайн