我正在使用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 */ }
答案 0 :(得分:2)
假设地面实况表中的值代表概率分布。您可以使用softmax_cross_entropy_with_logits作为损失函数,如官方文档中的tutorial所述。它主要取最后一层的输出,应用softmax来计算概率(从而降低0到1范围内的值),然后根据实际值计算损失。
但是,如果地面实况表中的值不代表实际的概率分布,那么您可以尝试规范化输出值,或者在输出层中应用sigmoid
函数。