Je construis un calque Keras personnalisé avec un support Tensorflow. Avant cela, je voulais tester si une couche Convolution2D fonctionne correctement si j'écris un calque Keras avec conv2d
de Tensorflow dans la fonction d'appel.Keras incapable de calculer le nombre de paramètres dans un calque personnalisé Keras
class Convolutional2D(Layer):
def __init__(self, filters=None, kernel_size=None, padding='same', activation='linear', strides=(1,1), name ='Conv2D', **kwargs):
self.filters = filters
self.kernel_size = kernel_size
self.padding = padding
self.activation = activation
self.strides = strides
self.name = name
self.input_spec = [InputSpec(ndim=4)]
super(Convolutional2D, self).__init__(**kwargs)
def call(self, input):
out = tf.layers.conv2d(inputs=input, filters=self.filters, kernel_size=self.kernel_size, strides=self.strides, padding=self.padding,
data_format='channels_last')
return(out)
def compute_output_shape(self, input_shape):
batch_size = input_shape[0]
width = input_shape[1]/self.strides[0]
height = input_shape[2]/self.strides[1]
channels = self.filters
return(batch_size, width, height, channels)
def get_config(self):
config = {'filters': self.filters, 'kernel_size': self.kernel_size, 'padding': self.padding, 'activation':self.activation, 'strides':self.strides,
'name':self.name}
base_config = super(Convolutional2D, self).get_config()
return dict(list(base_config.items()) + list(config.items()))
def build(self, input_shape):
self.input_spec = [InputSpec(shape=input_shape)]
Cette compile correctement, mais quand j'utilise le model.summary()
ne calcule pas le nombre de paramètres pour cette couche.
Que dois-je faire pour que, lorsque je vérifie le nombre total de paramètres du modèle, le nombre inclut le nombre de paramètres pouvant être entraînés pour cette couche?
S'il vous plaît corriger l'indentation .. – DJK
Vous devez accepter votre propre réponse - rien de mal à cela, au contraire, il est encouragé https://stackoverflow.com/help/self-answer – desertnaut