大家好

最近遇到一個錯誤:

ValueError: Negative dimension size caused by subtracting 3 from 1 for 'conv3d_1/convolution' (op: 'Conv3D') with input shapes: [?,1,20,20,20], [3,3,3,20,128].

在 keras 中的 Conv3D 預設使用的input 是 (影像寬, 影像高, 影像深, 1)

那個1 其實是指 RGB通道

例如資料的  data[第X張][X位置][Y位置][Z位置][RGB 的順序]

但是有時候我們的資料是 (1, 20, 20, 20)

不是 (20, 20, 20, 1)

那該怎麼設定呢?

可以用 data_format 的 channels_first

 

sample_shape = (1, 20, 20, 20)

model = keras.models.Sequential()
model.add(Conv3D(128, kernel_size=(3, 3, 3), activation='relu',data_format='channels_first', kernel_initializer='he_uniform', input_shape=sample_shape))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
model.add(Conv3D(256, kernel_size=(3, 3, 3), activation='relu', kernel_initializer='he_uniform'))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))

給大家參考囉