Как изменить параметры конфигурации kernel_initializer в keras Conv2D (2d сверточный слой)? - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь построить модель, похожую на ResNet, только для понимания каждой детали в слоях, но когда я использую get_config для слоев conv2D, масштаб, режим и распределение в kernel_initializer отличаются от конфигурации по умолчанию.Как я могу изменить эти параметры?См строки 14-18 сначала для Resnet Conv2D, а затем обычный Conv2D

1  #resnet Conv2D   
2  resnet_model.layers[2].get_weights()
3
4  {'name': 'conv1',
5  'trainable': True,
6  'filters': 64,
7  'kernel_size': (7, 7),
8  'strides': (2, 2),
9  'padding': 'valid',
10 'data_format': 'channels_last',
11 'dilation_rate': (1, 1),
12 'activation': 'linear',
13 'use_bias': True,
14 'kernel_initializer': {'class_name': 'VarianceScaling',
15  'config': {'scale': 2.0, 
16   'mode': 'fan_in',
17   'distribution': 'normal',
18   'seed': None}},
19 'bias_initializer': {'class_name': 'Zeros', 'config': {}},
20 'kernel_regularizer': None,
21 'bias_regularizer': None,
22 'activity_regularizer': None,
23 'kernel_constraint': None,
24 'bias_constraint': None}


1  #normal Conv2D   
2  model.layers[2].get_weights()
3
4  {'name': 'conv1',
5  'trainable': True,
6  'filters': 64,
7  'kernel_size': (7, 7),
8  'strides': (2, 2),
9  'padding': 'valid',
10 'data_format': 'channels_last',
11 'dilation_rate': (1, 1),
12 'activation': 'linear',
13 'use_bias': True,
14 'kernel_initializer': {'class_name': 'VarianceScaling',
15  'config': {'scale': 1.0, 
16   'mode': 'fan_avg',
17   'distribution': 'uniform,',
18   'seed': None}},
19 'bias_initializer': {'class_name': 'Zeros', 'config': {}},
20 'kernel_regularizer': None,
21 'bias_regularizer': None,
22 'activity_regularizer': None,
23 'kernel_constraint': None,
24 'bias_constraint': None}

Ответы [ 2 ]

0 голосов
/ 31 января 2019
from keras.initializers import VarianceScaling

convLayer = Conv2D(filters, kernel_size, ..., 
                   kernel_initializer = VarianceScaling(scale=2.0, 
                                                        mode='fan_in', 
                                                        distribution='normal', 
                                                        seed=None), 
                   ...)
0 голосов
/ 31 января 2019

Возможно, вы захотите взглянуть на документацию инициализаторов: https://keras.io/initializers/

Чтобы изменить этот параметр, вам нужно выбрать инициализатор, установив параметр kernel_initializer class_name .Затем вы можете передать аргумент инициализатору через поле config .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...