Вы пытались записать свои векторы объектов в файл arff и передать их в weka , просто чтобы посмотреть, может ли ваш подход работать вообще ?
Weka имеет много интегрированных классификаторов, включая MLP.
Насколько я понял, я подозреваю, что выбранные вами функции и классификатор не работают.
К вашему первоначальному вопросу: делали ли вы какие-либо попытки самостоятельно внедрить нейронную сеть? Если так, то где вы застряли? Обратите внимание, что это не то место, где можно запросить полную рабочую реализацию у аудитории.
Чтобы дать общий ответ на общий вопрос:
Обычно у вас есть узлы в MLP. В частности, входные узлы, выходные узлы и скрытые узлы. Эти узлы строго организованы в слоях. Входной слой внизу, выходной слой сверху, скрытые слои между ними. Узлы подключены простым способом прямой связи (выходные соединения разрешены только для следующего более высокого уровня).
Затем вы подключаете каждый из ваших float
к одному входному узлу и направляете векторы функций в вашу сеть. Для обратного распространения необходимо предоставить сигнал ошибки, который вы указываете для выходных узлов. Таким образом, если у вас есть n
имена для различения, вы можете использовать n
выходные узлы (т.е. по одному на каждое имя). Заставьте их, например, вернуть 1
в случае совпадения и 0
в противном случае. Вы могли бы очень хорошо использовать один выходной узел и позволить ему возвращать n
различных значений для имен. Вероятно, было бы даже лучше использовать n
совершенно разные персептроны, то есть по одному на каждое имя, чтобы избежать некоторых побочных эффектов (катастрофических помех).
Обратите внимание, что вывод каждого узла - это число, а не имя. Поэтому вам нужно использовать какие-то пороги, чтобы получить отношение числа к имени.
Также обратите внимание, что вам нужно много обучающих данных для обучения большой сети (то есть подчиняться проклятию размерности ). Было бы интересно узнать размер вашего float
массива.
Действительно, для сложного решения вам может понадобиться большее количество скрытых узлов или даже скрытых слоев.
Также обратите внимание, что вам может потребоваться выполнить большую оценку (т. Е. перекрестная проверка ), чтобы найти оптимальную конфигурацию (количество слоев, количество узлов на слой) или найти даже любую рабочую конфигурацию.
Удачи, в любом случае!