Как исправить Conv1D Autoencoder «ожидайте, чтобы иметь 3 измерения ...» - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу использовать этот код в качестве автоэнкодера:

# ENCODER
input_sig = Input(batch_shape=(None,1389,1))
x = Conv1D(64,3, activation='relu', padding='valid')(input_sig)
x1 = MaxPooling1D(2)(x)
x2 = Conv1D(32,3, activation='relu', padding='valid')(x1)
x3 = MaxPooling1D(2)(x2)
flat = Flatten()(x3)
encoded = Dense(32,activation = 'relu')(flat)
#encoded = Reshape((32,1))(encoded)

print("shape of encoded {}".format(K.int_shape(encoded)))

# DECODER 
x2_ = Conv1D(32, 3, activation='relu', padding='valid')(x3)
x1_ = UpSampling1D(2)(x2_)
x_ = Conv1D(64, 3, activation='relu', padding='valid')(x1_)
upsamp = UpSampling1D(2)(x_)
flat = Flatten()(upsamp)
decoded = Dense(1389,activation = 'relu')(flat)
decoded = Reshape((1389,))(decoded)

print("shape of decoded {}".format(K.int_shape(decoded)))

autoencoder = Model(input_sig, decoded)
autoencoder.compile(optimizer='adam', loss='mse', metrics=['accuracy'])    

Как видите, закодированные формы (?, 32) и декодированы (?, 1389).

Форма моих обучающих данных: (141, 1389).

При выполнении следующего кода

autoencoder.fit(X_train, X_train,
                epochs=150,
                batch_size=256,
                shuffle=True,
                validation_data=(X_test, X_test))

Я получил ошибку: ValueError: Ошибка при проверке ввода: ожидается, что input_15 будет иметь3 измерения, но получили массив с формой (141, 1389)

Не могли бы вы помочь мне решить эту проблему?

1 Ответ

1 голос
/ 12 апреля 2019

Используйте:

X_train = np.expand_dims(X_train, axis=2)

, чтобы расширить ваши тренировочные данные в третье измерение.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...