繁体   English   中英

标签大小与target_names不同:Tensorflow多输入回归转换为分类

[英]Labels size different from target_names: Tensorflow Multi-Input Regression converting to Classification

我正在尝试将多输入混合输入(txt,图像)keras模型从回归输出(房屋价格)转换为分类输出(卧室数量)。 特别是,我正在更改本教程

https://www.pyimagesearch.com/2019/02/04/keras-multiple-inputs-and-mixed-data/

成为分类器。 关于类别的数量,我有几个技术问题,而且我还得到一个我不完全理解的错误。

我将网络的最后一层更改为softmax:

x = Dense(11, activation="softmax")(x)

但是我只有10个类别(数据集涵盖1-10个卧室的房屋)。 但是使用Dense(10,...)我得到以下错误:

InvalidArgumentError:接收到的标签值10大于有效范围[0,10)。 标签值:3 2 5 2 10 3 2 5

我理解该错误以及如何避免该错误,但是考虑到我没有带0个卧室的房屋,为什么[0,10)的范围还不够?

当我尝试获取分类报告时,会收到两个警告:

UserWarning:标签大小为6,与target_names大小不匹配,为10 UndefinedMetricWarning:精度和F分数定义不明确,并且在没有预测样本的标签中设置为0.0。

我认为这些可能是因为我的分类报告仅包含1-6间卧室的房屋。 但不确定-您能提供的任何见解将不胜感激。

我的代码和数据集可以从这里克隆: https : //github.com/davidrtfraser/blog-keras-multi-input

通常在机器学习中,N个类的标签被编码为0到N-1范围内的整数,因为这直接从类索引映射,因此您可以使用argmax从模型输出中恢复它们。

所以,你需要以同样的方式编码的标签,最简单的方法就是。减去你的[1, 10]标签[0, 9]由每个标签从其减去一个,并从模型输出得到卧室的数量,您将一个添加到输出标签。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM