@nasdi

Почему код функционального api работает, а Sequential нет?

После прочтения 1 статьи решил написать простой автоэнкодер. Пример написанный с использованием функционально api работает, а мой с использованием Sequential api, ругается на размерность входа. Поэтому вопрос с следующем. Как переписать код в Sequential api ,что бы он работал и в чем была ошибка
Работающий код:
input_dim = X_train.shape[1]
encoding_dim = 14
input_layer = Input(shape=(input_dim, ))
encoder = Dense(encoding_dim, activation="tanh", 
                activity_regularizer=regularizers.l1(10e-5))(input_layer)
encoder = Dense(int(encoding_dim / 2), activation="relu")(encoder)
decoder = Dense(int(encoding_dim / 2), activation='tanh')(encoder)
decoder = Dense(input_dim, activation='relu')(decoder)
autoencoder = Model(inputs=input_layer, outputs=decoder)
nb_epoch = 100
batch_size = 32
autoencoder.compile(optimizer='adam', 
                    loss='mean_squared_error', 
                    metrics=['accuracy'])

history = autoencoder.fit(X_train, X_train,
                    epochs=nb_epoch,
                    batch_size=batch_size,
                    shuffle=True,
                    validation_data=(X_test, X_test),
                    verbose=1)

Не работающий:
keras_model = Sequential()
keras_model.add(Dense(14, activity_regularizer=regularizers.l1(10e-5), input_shape=(1,)))
keras_model.add(Activation('tanh'))
keras_model.add(Dense(7))
keras_model.add(Activation('relu'))
keras_model.add(Dense(7))
keras_model.add(Activation('tanh'))
keras_model.add(Dense(14))
keras_model.add(Activation('relu'))
keras_model.compile(optimizer='adam', loss = 'mean_squared_error', metrics=['accuracy'])
keras_model.fit(x_train, x_train,
                    epochs=nb_epoch,
                    batch_size=batch_size,
                    shuffle=True,
                    validation_data=(x_test, x_test),
                    verbose=1)

Ошибка:
Error when checking target: expected activation_140 to have shape (14,) but got array with shape (1,)

x_train.shape - (2800, 1)
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 1
DanilBaibak
@DanilBaibak
Machine Learning engineer
Попробуйте так:

input_dim = X_train.shape[1]
keras_model.add(Dense(14, activity_regularizer=regularizers.l1(10e-5), input_shape=(input_dim,)))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы