В вашей модели есть что-то, что не поддерживает переменное измерение. Например, слой
A Flatten
. Вам нужно использовать только те вещи, которые поддерживают переменные размеры. A GlobalMaxPooling2D
или GlobalAveragePooling2D
могут быть заменами для выравнивания.
Вы можете создать свой собственный Prelu:
class MyPrelu(Layer):
def __init__(self, **kwargs):
super(MyPrelu, self).__init__(**kwargs)
self.alpha_initializer = initializers.get('zeros')
self.alpha_regularizer = regularizers.get(None)
self.alpha_constraint = constraints.get(None)
def build(self, input_shape):
param_shape = tuple(1 for i in range(len(input_shape)-1)) + input_shape[-1:]
self.alpha = self.add_weight(shape=param_shape,
name='alpha',
initializer=self.alpha_initializer,
regularizer=self.alpha_regularizer,
constraint=self.alpha_constraint)
self.built = True
def call(self, inputs, mask=None):
pos = K.relu(inputs)
neg = -self.alpha * K.relu(-inputs)
return pos + neg
def compute_output_shape(self, input_shape):
return input_shape
#if you want to have those initializers and other parameters, check the source code and add this:
def get_config(.....):
....