Я пытаюсь воссоздать CNN в Керасе, чтобы классифицировать данные облака точек.CNN описан в этой статье.
Проектирование сети
Это моя текущая реализация:
inputs = Input(shape=(None, 3))
x = Conv1D(filters=64, kernel_size=1, activation='relu')(inputs)
x = BatchNormalization()(x)
x = Conv1D(filters=64, kernel_size=1, activation='relu')(x)
x = BatchNormalization()(x)
y = Conv1D(filters=64, kernel_size=1, activation='relu')(x)
y = BatchNormalization()(y)
y = Conv1D(filters=128, kernel_size=1, activation='relu')(y)
y = BatchNormalization()(y)
y = Conv1D(filters=2048, kernel_size=1, activation='relu')(y)
y = MaxPooling1D(1)(y)
z = keras.layers.concatenate([x, y], axis=2)
z = Conv1D(filters=512, kernel_size=1, activation='relu')(z)
z = BatchNormalization()(z)
z = Conv1D(filters=512, kernel_size=1, activation='relu')(z)
z = BatchNormalization()(z)
z = Conv1D(filters=512, kernel_size=1, activation='relu')(z)
z = BatchNormalization()(z)
z = Dense(9, activation='softmax')(z)
model = Model(inputs=inputs, outputs=z)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Проблема в том, что сеть предсказывает один и тот же класс для всехвходные данные.Это может быть вызвано ошибкой в моей реализации сети, переоснащением или недостаточным обучением.Может ли кто-нибудь заметить ошибку в моей реализации?
Yousefhussien, M., Kelbe, DJ, Ientilucci, EJ, & Salvaggio, C. (2017).Полностью сверточная сеть для семантической маркировки трехмерных облаков точек.Препринт arXiv arXiv: 1710.01408.