![](/img/trans.png)
[英]How to input an array of n items and output an array of size k in a neural network using keras?
[英]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.