簡體   English   中英

我應該如何更改我的神經網絡模型以適合最后的致密(2,激活)層?

[英]How should I change my neural network model to make fit the last dense(2 ,activation) layer?

我正在與Keras一起在神經網絡領域邁出第一步。 我只是嘗試使用一個似乎正確的示例中的1dconv圖層。 我僅更改輸入值的形狀以適合與特征對應的訓練數據(2200,513)513(長度為2200),如果我的訓練數據與目標相對應,我只希望設置兩個輸出。 那就是模型:

模型摘要:

Layer (type)                 Output Shape              Param #   
=================================================================
conv1d_37 (Conv1D)           (None, 2191, 500)         2565500   
_________________________________________________________________
conv1d_38 (Conv1D)           (None, 2182, 500)         2500500   
_________________________________________________________________
max_pooling1d_10 (MaxPooling (None, 727, 500)          0         
_________________________________________________________________
conv1d_39 (Conv1D)           (None, 718, 160)          800160    
_________________________________________________________________
conv1d_40 (Conv1D)           (None, 709, 160)          256160    
_________________________________________________________________
global_average_pooling1d_10  (None, 160)               0         
_________________________________________________________________
dense_10 (Dense)             (None, 2)                 322       
=================================================================
Total params: 6,122,642
Trainable params: 6,122,642
Non-trainable params: 0
_________________________________________________________________
None

當我訓練數據時出現此錯誤,我的最后一層沒有合適的大小(674197,)...我很困惑,有什么幫助嗎? 謝謝

我已經將最后一層的大小更改為674197,但這沒有任何意義,並且訓練在兩個時期后停止,而沒有改善。

model_m = Sequential()
model_m.add(Conv1D(500, 10, activation='relu', input_shape=(2200,513)))
model_m.add(Conv1D(500, 10, activation='relu'))
model_m.add(MaxPooling1D(3))
model_m.add(Conv1D(160, 10, activation='relu'))
model_m.add(Conv1D(160, 10, activation='relu'))
model_m.add(GlobalAveragePooling1D(data_format='channels_last'))
model_m.add(Dropout(0.5))
model_m.add()
model_m.add(Dense(2, activation='softmax'))
ValueError: Error when checking target: expected dense_10 to have shape (2,) but got array with shape (674197,)

我希望輸出應為2,所以我要保持此形狀,我應該修改模型的某些部分,但要注意?

因此,錯誤不是來自模型,而是來自將目標的標簽字符串更改為某些向量的代碼,丑陋的部分是這樣的:

from keras.utils import to_categorical
listNumTarget=[int(la,32) for la   in label_target_list]
target=to_categorical(listNumTarget)

我沒想到“ to_categorical”函數的行為,但是似乎該函數輸出是只有“ 0”和只有“ 1”的向量,它還期望標簽全部從0到最大數存在傳遞給函數。 因此,即使列表中的標簽很少,輸出長度也是傳遞給它的最大數量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM