我有使用Keras创建的基本神经网络.我使用数据向量和相应的输出数据成功训练网络,该数据是具有两个元素的向量.它代表一个坐标(x,y).所以在一个数组中,out是一个数组.
问题是我无法使用单个输入向量应对应于许多坐标的训练数据.实际上,我希望坐标矢量作为输出,而不需要事先知道坐标的数量.
网络是由创建的
model = Sequential()
model.add(Dense(20, input_shape=(196608,)))
model.add(Dense(10))
model.add(Dense(2))
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 20) 3932180
_________________________________________________________________
dense_2 (Dense) (None, 10) 210
_________________________________________________________________
dense_3 (Dense) (None, 2) 22
=================================================================
我意识到网络结构只允许长度为2的向量作为输出.密集层也不接受None作为其大小.如何修改网络以便它可以训练并输出向量矢量(坐标列表)?
解决方法:
一个rnn不是你想要的预测坐标.相反,我建议使用预测坐标和相关置信度的模型.因此,对于模型中的每个前向传递,您将有100个坐标预测.这些预测中的每一个都将具有另一个相关联的预测,以确定它是否正确.只有高于某个置信度阈值的预测才会计算在内.该置信度阈值允许模型每次选择它想要使用的点数(最大数量由输出数量设置,在此示例中为100).
r-cnn就是这样做的模型.这是我在github https://github.com/yhenon/keras-frcnn上找到的第一个keras实现.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。