Я использую 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 --------------------------------------------------------
Часть информации, которую я забыл упомянуть, состоит в том, что все мои входные данные являются отрицательными значениями, я не знаю, имеет ли это какие-либо последствия.