В чем разница между построением модели с использованием и без использования Sequential () в Keras?

У меня есть 2 build_model функции, как показано ниже:

def build_model01():
    X_input = Input(shape=(784,))
    Y = Dense(1, activation='sigmoid')(X_input)
    model = Model(inputs = X_input, outputs = Y, name='build_model')
    return model

def build_model02():
    model = Sequential()
    model.add(Dense(input_dim=784,units=1,activation='sigmoid'))
    return model

В чем разница между build_model01 и build_model02? Они практически одинаковые? Повлияют ли различия на другие слои?


person H42    schedule 22.08.2018    source источник


Ответы (1)


Фактически, нет никакой разницы между моделями, созданными с использованием функционального API (т.е. build_model01), и той же моделью, созданной как последовательная модель (то есть build_model02). Вы можете дополнительно подтвердить это, проверив Sequential class исходный код; как видите, это подкласс класса Model. Конечно, функциональный API Keras дает вам большую гибкость и позволяет создавать модели со сложной архитектурой (например, модели с несколькими входами / выходами или несколькими ветвями).

person today    schedule 22.08.2018
comment
@ H42 Верно. Поскольку модели, созданные с использованием функционального API, в отличие от последовательных моделей, могут иметь несколько выходов, каждый с разной конфигурацией вывода, не имеет смысла использовать predict_classes или predict_proba методы. В качестве альтернативы вы можете использовать решение, предложенное в этом ответе. - person today; 22.08.2018