Ускоренное обучение по классификации Multilabel с NNs - PullRequest
0 голосов
/ 23 мая 2018

Я использую Tensorflow для многокомпонентной классификации аудио.Набор данных, который я использую, состоит из 10 различных классов, и каждому образцу аудио соответствуют две метки.Другими словами, количество перекрывающихся звуков / классов на файл всегда равно 2. Таким образом, вектор меток "y" будет, например:

y = [0, 0, 0, 0, 0, 1, 0, 1, 0, 0]

Я использую 3 сверточных слоя, 1 слой FC и 1 выходной слой, состоящий из 10 логистических единиц.И в качестве функции стоимости я использую двоичную кросс-энтропию для каждой единицы, а затем усредняю ​​результат.

По некоторым причинам, я предполагаю, главным образом, как следствие инициализации параметров (весов)сеть и логистические единицы в выходном слое, сеть имеет тенденцию прогнозировать в основном нули.Я думаю, что после некоторой тренировки эта тенденция начнет исчезать, однако мне интересно, есть ли разумный способ сделать что-то, чтобы сеть не предсказывала столько нолей и предсказывала больше единиц , что, как я полагаю, могло бы сделатьстоимость выше и градиент сильнее (хотя на 100% не уверен в этом), и поэтому обучение будет быстрее.

Я использую инициализацию Xavier для весов всех слоев, например:

W2 = tf.get_variable("W", [5,5,24,48], initializer=tf.contrib.layers.xavier_initializer())

Может быть, использование tf.truncated_normal_initializer может помочь?

----------------------------------------- РЕДАКТИРОВАТЬ 1 --------------------------------------------------------

Часть информации, которую я забыл упомянуть, состоит в том, что все мои входные данные являются отрицательными значениями, я не знаю, имеет ли это какие-либо последствия.

...