一般來說,我對(duì) keras、cnn 和深度學(xué)習(xí)相當(dāng)陌生,所以如果解決方案非常簡(jiǎn)單,我非常抱歉。我真的陷入了死胡同。所以,問題是,我有一個(gè) 3D CNN,其輸入數(shù)據(jù)為 50x50x50 的立方體。我想將它們分類為0或1,所以這是一個(gè)二元分類問題。在將其擬合到神經(jīng)網(wǎng)絡(luò)之前,我當(dāng)然準(zhǔn)備了數(shù)據(jù),對(duì)其進(jìn)行重構(gòu)、調(diào)整大小和標(biāo)準(zhǔn)化。因此,圖像具有可比性(1 體素為 2 毫米),標(biāo)準(zhǔn)化為 0 到 1 范圍且大小相同。因此,當(dāng)我嘗試將數(shù)據(jù)擬合到我的模型中時(shí),結(jié)果并不那么令人鼓舞。準(zhǔn)確度始終顯示為 0,我在單個(gè) epoch 中獲得的最高準(zhǔn)確度是accuracy: 0.0159,損失始終在 3.2 到 3.5 之間我也改變了 epoch 的數(shù)量,但無論是 5 個(gè)還是 50 個(gè)都沒關(guān)系。結(jié)果總是相同的。這是我的 CNN 架構(gòu)的代碼 model = Sequential() model.add(Conv3D(64, kernel_size=(5, 5, 5), activation='linear', kernel_initializer='glorot_uniform', input_shape=shape)) model.add(BatchNormalization(center=True, scale=True)) model.add(LeakyReLU(.1)) model.add(Dropout(.25)) model.add(Conv3D(128, kernel_size=(3, 3, 3), activation='linear', kernel_initializer='glorot_uniform')) model.add(BatchNormalization(center=True, scale=True)) model.add(LeakyReLU(.1)) model.add(MaxPooling3D(pool_size=(3, 3, 3))) model.add(Dropout(.25)) model.add(Conv3D(256, kernel_size=(3, 3, 3), activation='linear', kernel_initializer='glorot_uniform')) model.add(BatchNormalization(center=True, scale=True)) model.add(LeakyReLU(.1)) model.add(Dropout(.25)) model.add(Conv3D(512, kernel_size=(3, 3, 3), activation='linear', kernel_initializer='glorot_uniform')) model.add(BatchNormalization(center=True, scale=True)) model.add(LeakyReLU(.1)) model.add(MaxPooling3D(pool_size=(3, 3, 3))) model.add(Dropout(.25)) model.add(Flatten()) model.add(Dense(256)) model.add(BatchNormalization(center=True, scale=True)) model.add(LeakyReLU(.1)) model.add(Dropout(.5)) model.add(Dense(512)) model.add(BatchNormalization(center=True, scale=True)) model.add(LeakyReLU(.1)) model.add(Dropout(.5)) model.add(Dense(256))所以我想問一下,我的架構(gòu)有什么問題嗎?或者您認(rèn)為問題更多出在數(shù)據(jù)方面?我只有 420 張圖像;其中 3/4 用于訓(xùn)練,1/4 用于測(cè)試。這可能是問題所在嗎?當(dāng)基本模型運(yùn)行穩(wěn)定時(shí),我想稍后增強(qiáng)圖像?;蛘呶冶仨毾冗@樣做?
1 回答

LEATH
TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
這對(duì)于具有兩個(gè)類別的分類問題沒有意義:
model.add(Dense(256)) model.add(BatchNormalization(center=True, scale=True)) model.add(Activation('softmax'))
改成這樣:
model.add(Dense(1)) model.add(Activation('sigmoid'))
還可以考慮使用'relu'
激活而不是'linear'
卷積層。
添加回答
舉報(bào)
0/150
提交
取消