簡體   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