因此,我在我创建的多标签数据集(约20000个样本)上训练了一个深度神经网络。我将softmax切换为S形并尝试最小化(使用Adam优化器):
tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=y_, logits=y_pred)
Run Code Online (Sandbox Code Playgroud)
最后,我得到了这个预测之王(相当“恒定”):
Prediction for Im1 : [ 0.59275776 0.08751075 0.37567005 0.1636796 0.42361438 0.08701646 0.38991812 0.54468459 0.34593087 0.82790571]
Prediction for Im2 : [ 0.52609032 0.07885984 0.45780018 0.04995904 0.32828355 0.07349177 0.35400775 0.36479294 0.30002621 0.84438241]
Prediction for Im3 : [ 0.58714485 0.03258472 0.3349618 0.03199361 0.54665488 0.02271551 0.43719986 0.54638696 0.20344526 0.88144571]
Run Code Online (Sandbox Code Playgroud)
起初,我以为自己只是想为每个班级找到一个阈值。
但是我注意到,例如,在我的20000个样本中,第一类出现的次数约为10800,因此比率为0.54,并且该值始终是我的预测的值。因此,我认为我需要找到一种解决突尼斯“不平衡的数据集”问题的方法。
我考虑过将数据集(Underampling)减少为每个类别都具有相同的出现次数,但只有26个样本对应于我的一个类别...这会使我失去很多样本...
我读到了有关过度采样或对更多类(虽然很少见但并未真正理解其工作原理)进行惩罚的文章。
有人可以分享一些有关这些方法的解释吗?
实际上,在Tensorflow上,是否有有助于实现此目的的函数?
还有其他建议吗?
谢谢 :)
PS:用于不平衡的多类别多标签分类的神经网络这篇文章提出了同样的问题,但没有答案!
我有一个CNN,可以在我创建的数据集中学习得很好。我向该网络添加了“批量归一化”以尝试改善性能。
但是..当我尝试对单个图像进行预测时,我总是会得到相同的结果(无论图像如何)。我认为这是因为我需要批处理才能真正进行批处理规范化。
那么有可能使用BN的CNN对单个图像进行预测吗?我想在网络训练完毕后删除BN图层,这是可行的方法吗?
谢谢 :)
我已经训练了一个我用Tensorflow使用Python实现的网络.最后,我用tf.train.Saver()保存了模型.现在我想用C++使用这个经过预先训练的网络进行预测.
我怎样才能做到这一点 ?有没有办法转换检查点,所以我可以使用tiny-dnn或Tensorflow C++?
欢迎任何想法:)谢谢!
我目前正在训练一个网络(使用Tensorflow实现的CNN)来分类超过3个类,事情是我最终得分如下:
[ -20145.36, 150069, 578456.3 ].
Run Code Online (Sandbox Code Playgroud)
我希望得分在0到1之间(某种概率).
起初,我想过使用sigmoid函数,但后来我发现这个讨论甚至没有提到:
你建议我做什么,每堂课的得分在0到1之间?
谢谢
classification deep-learning conv-neural-network tensorflow softmax