Являются ли две версии, показанные ниже, эквивалентными?
Да, эти два способа определяют одну и ту же модель.После того как ваша модель архитектуры определена, все последующие шаги одинаковы, независимо от того, использовали ли вы Sequential()
или Model()
.
Является ли объект InputLayer просто заполнителем без действия?
Да, объект InputLayer - это заполнитель, который ничего не делает.Если вы используете summary()
, вы обнаружите, что его номер параметра равен 0.
print(model1.summary())
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 10) 0
_________________________________________________________________
dense_1 (Dense) (None, 10) 110
_________________________________________________________________
dense_2 (Dense) (None, 10) 110
=================================================================
Total params: 220
Trainable params: 220
Non-trainable params: 0
Sequential()
используется только для линейных стопок слоев.Model()
используется для ориентированных ациклических графов слоев, что позволяет создавать совершенно произвольные архитектуры (например, несколько входов и несколько выходов).
Вывод model.layers
, который вы видите, отличается, потому что слои имеют разные экземпляры.Они разные даже на разных машинах, но работают одинаково.