Я пытаюсь повысить точность CNN, вычисляя некоторые динамические значения c, такие как моменты Ху изображений, во время фазы обучения, а затем подавать их на полностью связанный слой со сплющенным вектором, как показано на рисунке. моей модели:
Я хочу вычислить моменты Ху для каждого изображения в наборе данных, а затем после операции сглаживания хочу объединить значения моменты Ху с жирным вектором и подачей его на полностью связанный слой.
Я использую эту модель (Tensorflow Keras):
layer1 = Conv2D(16, (3, 3),padding="same", activation='relu')(inpx)
layer2 = Conv2D(32, kernel_size=(3, 3),padding="same", activation='relu')(layer1)
layer3 = MaxPooling2D(pool_size=(2, 2))(layer2)
layer4 = Conv2D(64, kernel_size=(5, 5),padding="same", activation='relu')(layer3)
layer5 = Conv2D(128, kernel_size=(5, 5),padding="same", activation='relu')(layer4)
layer6 = MaxPooling2D(pool_size=(2, 2))(layer5)
layer7 = Dropout(0.5)(layer6)
layer8 = Flatten()(layer7)
layer9 = Dense(250, activation='sigmoid')(layer8)
layer10 = Dense(10, activation='softmax')(layer9)
model = Model([inpx], layer10)
model.compile(optimizer=keras.optimizers.Adadelta(),
loss=keras.losses.categorical_crossentropy,
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10, batch_size=500)
score = model.evaluate(x_test, y_test, verbose=0)
Набор данных, который я использую такое MNIST рукописные цифры.