Автоматический кодер CNN для целей классификации - PullRequest
0 голосов
/ 21 января 2020

Я хотел бы использовать слой сжатия AE для обучения простого классификатора или регрессора. На самом деле форма сжатого слоя (64,128), так как я могу преобразовать этот слой в целях классификации? Если я использую функцию выравнивания, мой новый слой имеет размер 8192 (полагаю, он слишком большой). Может ли кто-нибудь мне помочь?

Вот код:

input_img = Input(shape=(x_train1.shape[1], x_train1.shape[2])) # 0
conv1 = Convolution1D(16, 7, activation='relu', border_mode='same', init='glorot_normal', 
                      W_regularizer=regularizers.l2(0.0005))(input_img)  # 1
pool1 = MaxPooling1D(2, border_mode='same')(conv1)  # 2
conv2 = Convolution1D(32, 5, activation='relu', border_mode='same', init='glorot_normal', 
                      W_regularizer=regularizers.l2(0.0005))(pool1)  # 3
pool2 = MaxPooling1D(2, border_mode='same')(conv2)  # 4
conv3 = Convolution1D(64, 3, activation='relu', border_mode='same', 
                      init='glorot_normal',W_regularizer=regularizers.l2(0.0005))(pool2)  # 5
pool3 = MaxPooling1D(2, border_mode='same')(conv3)  # 6
conv4 = Convolution1D(128, 3, activation='relu', border_mode='same', init='glorot_normal', 
                      W_regularizer=regularizers.l2(0.0005))(pool3)  # 7
pool4 = MaxPooling1D(2, border_mode='same')(conv4)  # 8

stack_encoded = pool4

unpool4 = UpSampling1D(2)(pool4)  # 9
deconv3 = Convolution1D(64, 3, activation='relu', border_mode='same', 
                        init='glorot_normal',W_regularizer=regularizers.l2(0.0005))(unpool4)  # 10
unpool3 = UpSampling1D(2)(deconv3)  # 11
deconv2 = Convolution1D(32, 3, activation='relu', border_mode='same', 
                       init='glorot_normal',W_regularizer=regularizers.l2(0.0005))(unpool3)  # 12
unpool2 = UpSampling1D(2)(deconv2)  # 13
deconv1 = Convolution1D(16, 5, activation='relu', border_mode='same', 
                        init='glorot_normal',W_regularizer=regularizers.l2(0.0005))(unpool2)  # 14
unpool1 = UpSampling1D(2)(deconv1)  # 15
decoded = Convolution1D(1, 7, border_mode='same', 
                        init='glorot_normal',W_regularizer=regularizers.l2(0.0005))(unpool1)  # 16

Здесь сюжет_модель

Спасибо

Николас

1 Ответ

0 голосов
/ 22 января 2020

После Flattened вы можете добавить несколько Dense слоев и, наконец, слой с количеством классов для классификации с softmax активацией. Это почти как нормальная модель классификации CNN.

model.add(Flatten())
model.add(Dense(8192, activation='relu'))
model.add(Dense(2048, activation='relu'))
model.add(Dense(512, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(2, activation = 'softmax'))
...