我正在使用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
代替
有帮助?
----------------------------------------- EDIT 1 ---- -------------------------------------------------- -
我忘了提到的一条信息是我的所有输入都是负值,我不知道这是否会产生任何后果。