簡體   English   中英

3D CNN 預測質心

[英]3D CNN predicting mass center

我想建立一個非常簡單的 3D CNN,我想在其中預測 3D 中粒子的質心。 所以我的輸入維度為 (1000,3)(1000 個粒子,x,y,z 坐標),output 為 (1,3)(因為 1000 個粒子只有一個中心)。

當然,我有很多這樣的子集,它們有 1000 個粒子,我會將它們視為訓練和驗證集; 讓我們考慮一下我的訓練集由 2000 個這樣的框組成,我的最終 X_train 形狀為 (2000,1000,3),而 Y_train 為 (2000,1,3)。

這種 CNN 的架構看起來如何?

在嘗試構建一個時,我總是遇到維度問題。 這是我的嘗試:

input_layer = Input((1000,3))

conv_layer1 = Conv3D(filters=8, kernel_size=(3, 3, 3), activation='relu')(input_layer)
conv_layer2 = Conv3D(filters=16, kernel_size=(3, 3, 3), activation='relu')(conv_layer1)

pooling_layer1 = MaxPool3D(pool_size=(2, 2, 2))(conv_layer2)

conv_layer3 = Conv3D(filters=32, kernel_size=(3, 3, 3), activation='relu')(pooling_layer1)
conv_layer4 = Conv3D(filters=64, kernel_size=(3, 3, 3), activation='relu')(conv_layer3)
pooling_layer2 = MaxPool3D(pool_size=(2, 2, 2))(conv_layer4)

pooling_layer2 = BatchNormalization()(pooling_layer2)
flatten_layer = Flatten()(pooling_layer2)

dense_layer1 = Dense(units=2048, activation='relu')(flatten_layer)
dense_layer1 = Dropout(0.4)(dense_layer1)
dense_layer2 = Dense(units=512, activation='relu')(dense_layer1)
dense_layer2 = Dropout(0.4)(dense_layer2)
output_layer = Dense(units=1, activation='relu')(dense_layer2)

model = Model(inputs=input_layer, outputs=output_layer)

我明白了

ValueError: Input 0 of layer conv3d_11 is incompatible with the layer: : expected min_ndim=5, found ndim=3. Full shape received: [None, 1000, 3]

假設您的輸入量的尺寸為 32x32x32 (x,y,z) 並且是灰色的(一個通道)

所以你的輸入必須是:

Input((1000, 32, 32, 32, 1))

暫無
暫無

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

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