Я новичок в области глубокого обучения и хочу создать автокодер Conv1D для временных рядов с такими формами:
- образцы: 200
- временные шаги: 23
- Особенности: 178
Я не уверен, как мне установить параметры: фильтры, размер ядра и слои MaxPooling1D (каково поведение?), Сгладить (что поведение?), и как должен быть архитектурно спроектирован самый простой Conv1D Autoencoder.
Я пытался собрать что-то в одиночку, но моя версия не работает вообще:
input_layer = Input(shape=(TIMESTEPS, feature_size))
# ENCODER
x = Conv1D(filters=encoding_dim, kernel_size=TIMESTEPS, activation='relu', padding='valid')(input_layer)
x1 = MaxPooling1D(poolsize=TIMESTEPS)(x)
flat = Flatten()(x1)
encoded = Dense(units=encoding_dim, activation = 'relu')(flat)
print("shape of encoded {}".format(K.int_shape(encoded)))
# DECODER
x_ = Conv1D(encoding_dim, TIMESTEPS, activation='relu', padding='valid')(encoded)
upsamp = UpSampling1D(TIMESTEPS)(x_)
flat = Flatten()(upsamp)
decoded = Dense(units=feature_size, activation = 'relu')(flat)
decoded = Reshape((TIMESTEPS, feature_size))(decoded)
print("shape of decoded {}".format(K.int_shape(decoded)))
autoencoder = Model(input_layer, decoded)
ValueError: Отрицательный размерный размер, вызванный вычитанием 23 из 1 для 'max_pooling1d / MaxPool' (op: 'MaxPool') с входными формами: [?, 1,1,59].