Interesting, I wonder how they trained the VGG19 in keras.applications
Here it is in mid 2016:

  

      github.com
  

  
    keras-team/keras/blob/90d0eb9b88c5ef6f756574f60d314c0aa7916f2c/keras/layers/convolutional.py#L369 2



      
      
              `(samples, rows, cols, channels)` if dim_ordering='tf'.
          
          
# Output shape
              4D tensor with shape:
              `(samples, nb_filter, new_rows, new_cols)` if dim_ordering='th'
              or 4D tensor with shape:
              `(samples, new_rows, new_cols, nb_filter)` if dim_ordering='tf'.
              `rows` and `cols` values might have changed due to padding.
          '''
          def __init__(self, nb_filter, nb_row, nb_col,
                       init='glorot_uniform', activation='linear', weights=None,
                       border_mode='valid', subsample=(1, 1), dim_ordering='default',
                       W_regularizer=None, b_regularizer=None, activity_regularizer=None,
                       W_constraint=None, b_constraint=None,
                       bias=True, **kwargs):
              if dim_ordering == 'default':
                  dim_ordering = K.image_dim_ordering()
              if border_mode not in {'valid', 'same'}:
                  raise Exception('Invalid border mode for Convolution2D:', border_mode)
              self.nb_filter = nb_filter
              self.nb_row = nb_row
      
    
  


  

  
    
    
  

  


It’s probably one of those things that got set at one point when it made sense and then got locked in by backwards compatibility guarantees.
Aside from updating the keras.applications to allow initializers as arguments. Annother possible solution would be for keras to implements a global “default_initializer” or something like that. Either one would take some work.