事实是,为了训练网络的多标签数据集,通常使用一个热向量输出。
狗1 0 0猫0 1 0兔0 0 1
因此,我们增加了重量矩阵的大小以及所需的训练时间。
问:是否有一种方法,我们可以使用一个输出,并量化它为不同的类?
0 <=输出< =1犬0.0 - 0.33猫0.33 - 0.66兔0.66 -1
发布于 2020-01-04 12:13:03
博士
坏主意,别那么做。
1)在不存在的类中引入排序。基本上,用您的例子来说,您是说:"dog接近cat","cat接近rabbit",但是"dog远离rabbit",这是您的网络需要学习的额外学习特性。
例如,如果网络输出0.35,那么它是类cat,但它也接近dog,远离rabbit。
( 2)另一个问题,一些结果不可能被表示出来。
例如,如果将范围更改为:
0 <=输出< =1猫0.0 - 0.33兔0.33 - 0.66犬0.66 -1
您将如何表示与以前相同的示例(“它是类cat,但它也接近dog,远离rabbit)?”这变得不可能了。
使用前面的表示形式,您可以拥有:
output = [0.5, 0.0, 0.5] # cat, rabbit, dog您将如何将其映射到cat = [0.0-0.33]和dog = [0.66-1.0]的新范围?我们能选中间的(0.5)吗?不,因为那是rabbit类。
通过这样做,您可以减少最后层中的权重(很好),但是,您引入了需要学习的依赖关系,并且有些结果是不可表达的或不可解释的。
发布于 2020-01-04 11:24:35
执行一个标签编码,然后对列进行规范化。
https://datascience.stackexchange.com/questions/65835
复制相似问题