繁体   English   中英

具有大小为 4 的输入数组和大小为 8 的 output 数组的神经网络

[英]Neural Network with an input array of size 4 and output array of size 8

我正在尝试处理从 YOLO v5 获得的数据,它是每个检测到的 object 的 4 个值(posX、posY、SizX、Sizy)的数组。 现在,我知道有几个检测是相关的,我想要一个神经网络来找到这种关系。 对于每个数组输入,它应该以 output 的形式返回一个 2x4 矩阵,或者扁平化的大小为 8 的数组。我正在使用 Keras Sequential Z20F35E630DAF439DBFA4C3F68FC5 训练 4017 个样本

model = Sequential()

model.add(layers.Dense(256, activation="relu", name="layer1"))
model.add(Dropout(0.5))
model.add(BatchNormalization())
model.add(layers.Dense(592, activation="relu", name="layer2"))
model.add(Dense(8))
model.add(Activation('softmax'))

sgd = tf.keras.optimizers.SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy',
              optimizer=sgd,
              metrics=['accuracy'])
hist=model.fit(X, y, batch_size=48, epochs=50, validation_split=0.2)

但我得到的结果并不好:

Epoch 20/20
80/80 [==============================] - 1s 10ms/step - loss: 0.5413 - accuracy: 0.9963 - val_loss: 0.5414 - val_accuracy: 0.9937

预测在哪里:

Input: [0.50070833 0.50070833 0.42683333 0.22983333]

Expected Output: [[0.591      0.50070833 0.04514583 0.25035417]
                 [0.50070833 0.34475    0.44735417 0.04514583]]

NeuralNetwork Output: [[0.28618604 0.18969838 0.00889739 0.06283922]
                      [0.18952993 0.09904755 0.15489812 0.00890343]]

添加/抑制层/BatchNormalization/Dropout 没有任何区别,更改损失函数/优化器只会使结果恶化。 您对这个问题有什么建议或解决方案吗?

output 处的 Softmax 激活用于分类问题,您似乎不是在做分类,而是回归(因为 output 是连续的,而不是离散的)。

然后,您应该将 output 处的激活更改为适当的值,例如linear (一般解决方案)或sigmoid (如果目标在 [0, 1] 范围内)。

暂无
暂无

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

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