我正试图建立一个模型来学习3D空间的特征。与图像处理不同,3D矩阵的值是不连续的;它们表示在特定坐标下可以找到的“物质”的一些离散值(例如,grass值为1或楼梯值为2)。
是否有可能训练一个模型来学习空间的特征而不插入中间值?例如,我不想让神经网络推断1.5是某种草阶。
发布于 2019-09-11 18:06:28
您将需要使用一个热编码,它将分类值表示为一个值设置为一个的零数组。这意味着草(id = 1)为[0, 1, 0, 0, ...],楼梯(id = 2)为[0, 0, 1, 0, ...]。要执行一次热编码,请查看keras的to_categorical函数。
进一步读:
发布于 2019-09-11 18:06:39
作为任何范畴模型,这应该是一个“一个热点”的数据。
数据的“通道”维度应该有一个n-materials大小。
因此,您的输入形状将类似于(samples, spatial1, spatial2, spatial3, materials)。如果您的数据当前形状为(samples, s1, s2, s3),并且像您所描述的那样将物质转换为整数,则可以使用to_categorical将整数转换为“单热”。
发布于 2019-09-11 18:14:09
虽然我不确定这是否是你想要的,但我可以想象,在卷积网络的瓶颈之后,一个人通常会使用扁平层,然后输出到一个密集的层。输出层,如果使用sigmoid激活,将给您的每个类的概率,必须是一个热编码,正如其他人所建议的。
如果您希望网络本身的输出在离散值中,我想您可以在输出层中使用某种逐步激活函数。但是,您必须注意您的损失在整个网络中仍然是可区分的(这就是为什么这种激活功能在keras中不可用)。这可能令人感兴趣:https://github.com/keras-team/keras/issues/7370
https://stackoverflow.com/questions/57894439
复制相似问题