Tensorflow输出层应该只具有特定范围之间的值

时间:2016-12-01 15:49:26

标签: python range tensorflow output layer

我正在使用tensorflow并遵循CNN(下面的代码)。我的输入图层是72x72图像,由于两个maxpool图层,它输出一个18x18矩阵。

现在我的问题: 是否可以为输出矩阵(18x18)中的值定义范围?这样的值只在[0,1]之间?因为实际上输出矩阵应该代表密度图。所以我不需要高于1的值。

我的“groundtruth标签”是一个18x18矩阵,其值仅在[0,1]之间。 因为我的网尚未训练,所以损失非常高,因为输出矩阵中的值非常高,例如。 2379922.如果我可以提供输出值的范围,那么损失在开始时就不会那么高了。

感谢您的帮助: - )

const user = { id: 1, name: "Fart Face 3rd"};
const userUpdate = { name: "Pizza Face" };

try {
    user = await new Promise( ( resolve, reject ) => {
        User.update( { _id: user.id }, userUpdate, { upsert: true, new: true }, ( error, obj ) => {
            if( error ) {
                console.error( JSON.stringify( error ) );
                return reject( error );
            }

            resolve( obj );
        });
    })
} catch( error ) { /* set the world on fire */ }

1 个答案:

答案 0 :(得分:2)

假设地面实况表中的值代表概率分布。您可以使用softmax_cross_entropy_with_logits作为损失函数,如官方文档中的tutorial所述。它主要取最后一层的输出,应用softmax来计算概率(从而降低0到1范围内的值),然后根据实际值计算损失。

但是,如果地面实况表中的值不代表实际的概率分布,那么您可以尝试规范化输出值,或者在输出层中应用sigmoid函数。