Как функция conv2D меняет входной слой - PullRequest
0 голосов
/ 01 октября 2019

В моей сети ResNet32, кодированной с использованием Tensorflow, размер входа составляет 32 x 32 x 3, а выход слоя - 32 x 32 x 32. Почему используется 32 канала?

tf.contrib.layers.conv2d(
    inputs,
    **num_outputs**,  /// how to determine the number of channel to be used in my layer?
    kernel_size,
    stride=1,
    padding='SAME',
    data_format=None,
    rate=1,
    activation_fn=tf.nn.relu,
    normalizer_fn=None,
    normalizer_params=None,
    weights_initializer=initializers.xavier_initializer(),
    weights_regularizer=None,
    biases_initializer=tf.zeros_initializer(),
    biases_regularizer=None,
    reuse=None,
    variables_collections=None,
    outputs_collections=None,
    trainable=True,
    scope=None
)

Спасибо завперед,

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Назначая stride=2, вы можете уменьшить пространственный размер входного тензора, чтобы высота и ширина выходного тензора становились половиной этого входного тензора. Это означает, что если ваша форма входного тензора равна (batch, 32, 32, 3) (3 для канала RGB) для слоя Convolution, имеющего 32 ядра / фильтра с stride=2, то форма выходного тензора будет (batch, 16, 16, 32). В качестве альтернативы, пул также широко используется для уменьшения размера выходного тензора.

Способность изучать иерархическое представление с помощью стекирования составного слоя рассматривается как ключ к успеху CNN. В CNN, когда мы углубляемся, пространственный размер тензора уменьшается, тогда как количество каналов увеличивается, что помогает обрабатывать изменения внешнего вида сложного целевого объекта. Это уменьшение пространственного размера резко уменьшает необходимое количество арифметических операций и время вычислений с мотивом извлечения выдающихся особенностей, способствующих окончательному выводу / решению. Однако нахождение этого оптимального количества фильтра / ядра / выходного канала отнимает много времени, и поэтому люди следуют проверенным ранее архитектурам, например VGG.

0 голосов
/ 01 октября 2019

Входное значение 3 представляет собой число, обозначающее, что входное изображение является RGB (цветное изображение), также называемое цветными каналами, и если бы это было черно-белое изображение, то оно было бы 1 (монохромное). образ).

Выходные данные 32 представляют собой количество нейронов \ количество объектов \ количество каналов, которые вы используете, поэтому в основном вы представляете изображение в 3 цветах с 32 каналами. Это помогает в изучении более сложного и различного набора функций изображения. Например, это может заставить сеть учиться лучше.

...