Я прошел через документацию Keras , но все еще не могу понять, как работает параметр input_shape
и почему он не меняет количество параметров для моей модели DenseNet, когда я передаю егопользовательская форма ввода.Пример:
import keras
from keras import applications
from keras.layers import Conv3D, MaxPool3D, Flatten, Dense
from keras.layers import Dropout, Input, BatchNormalization
from keras import Model
# define model 1
INPUT_SHAPE = (224, 224, 1) # used to define the input size to the model
n_output_units = 2
activation_fn = 'sigmoid'
densenet_121_model = applications.densenet.DenseNet121(include_top=False, weights=None, input_shape=INPUT_SHAPE, pooling='avg')
inputs = Input(shape=INPUT_SHAPE, name='input')
model_base = densenet_121_model(inputs)
output = Dense(units=n_output_units, activation=activation_fn)(model_base)
model = Model(inputs=inputs, outputs=output)
model.summary()
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input (InputLayer) (None, 224, 224, 1) 0
_________________________________________________________________
densenet121 (Model) (None, 1024) 7031232
_________________________________________________________________
dense_1 (Dense) (None, 2) 2050
=================================================================
Total params: 7,033,282
Trainable params: 6,949,634
Non-trainable params: 83,648
_________________________________________________________________
# define model 2
INPUT_SHAPE = (512, 512, 1) # used to define the input size to the model
n_output_units = 2
activation_fn = 'sigmoid'
densenet_121_model = applications.densenet.DenseNet121(include_top=False, weights=None, input_shape=INPUT_SHAPE, pooling='avg')
inputs = Input(shape=INPUT_SHAPE, name='input')
model_base = densenet_121_model(inputs)
output = Dense(units=n_output_units, activation=activation_fn)(model_base)
model = Model(inputs=inputs, outputs=output)
model.summary()
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input (InputLayer) (None, 512, 512, 1) 0
_________________________________________________________________
densenet121 (Model) (None, 1024) 7031232
_________________________________________________________________
dense_2 (Dense) (None, 2) 2050
=================================================================
Total params: 7,033,282
Trainable params: 6,949,634
Non-trainable params: 83,648
_________________________________________________________________
В идеале при увеличении формы ввода число параметров должно увеличиваться, однако, как вы можете видеть, они остаются одинаковыми.Мои вопросы, таким образом:
- Почему число параметров не изменяется с изменением в
input_shape
? - Я определил только один канал в моем
input_shape
, чтослучится с моей моделью обучения по этому сценарию?В документации сказано следующее:
input_shape: необязательный кортеж формы, указывается только в том случае, если include_top имеет значение False (в противном случае форма ввода должна быть (224, 224, 3) (с помощью 'channel_last (формат данных) или (3, 224, 224) (с форматом данных channel_first). Он должен иметь ровно 3 входных канала, а ширина и высота должны быть не менее 32. Например, (200, 200, 3)может быть одним допустимым значением.
Однако, когда я запускаю модель с этой конфигурацией, она запускается без каких-либо проблем. Может ли быть что-то, что мне не хватает?
Использование Keras 2.2.4с Tensorflow 1.12.0 в качестве бэкэнда.