【神经网络实践】tentorflow上的多目标识别(4) (失败记录)

前言:

{

    自从上次更新第3部分之后,这个系列其实我也一直在调试,只不过结果一直不好(大多数情况下网络只从样本标签分布中获得识别参考)。今天突然想到大概是怎么回事,就在这记录一下遇到的一些问题。

}

 

正文:

{

    自从上次更新此系列之后,我就一直在调试。为了解决误差降不下去的问题,试过了很多方法:

    1,鼓励网络输出1

    {

        在https://blog.csdn.net/fish_like_apple/article/details/83278161中我说网络总是给出全0,所以当时我想鼓励网络输出1。我在网络的最后一层添加了“鼓励层”。对于“鼓励层”,我做了很多尝试,总之就是使得输出到1的损失会变的更大。

        结果显而易见地失败了,因为问题不在这(我记得在某个方法下,经过长时间训练后网络还是会输出全0)。

}

    2,输出标准化

    {

        很久之前,此网络的输出会被直接用于与标签计算均方差,导致有时损失会很大(因为输出可能会很夸张),所以自己加了一层0-1归一层,见代码1。

#代码1
def tf_max_min_normalization(input, number_of_calsses, zero_avoider = -0.0001):
    '''this function is to add a max-min-normalization layer avoiding
    a zero in the denominator and all-zero in the result'''
    max = tf.tile(tf.expand_dims(tf.reduce_max(input, 1), 1), [1, number_of_calsses]) 
    min = tf.tile(tf.expand_dims(tf.reduce_min(input, 1), 1), [1, number_of_calsses])
    min = min + zero_avoider
    return (input-min) / (max-min)

        此层既可以进行归一化,又可以避免分母为0,还可以防止网络输出全0。

        可是还是失败了,虽然网络不在输出全0,但是不管输入如何,网络的输出都类似。图1是部分输出。

图1

    }

    实际上,问题还是在我使用的特征提取网络上。

    之后我没有头绪就在谷歌上乱搜。好在我看到了[1]中的第一个回答,这时我才发现问题所在:我一直使用的特征提取网络是由一般的分类训练得到的,输出中机会不存在局部特征。

}

 

结语:

{

    这次就先记录到这,时间有限,目前只能先注重调试。

    参考资料:

    {

        [1](需翻墙)https://www.quora.com/What-is-the-best-way-to-do-multiple-object-recognition-classification-in-real-time-using-OpenCV-and-GPU-CUDA

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值