MCPcopy Create free account
hub / github.com/LynnHo/EigenGAN-Tensorflow / convolution

Function convolution

tflib/deep_learning/layers.py:67–129  ·  view source on GitHub ↗
(inputs,
                num_outputs,
                kernel_size,
                stride=1,
                padding='SAME',
                data_format=None,
                rate=1,
                activation_fn=None,
                normalizer_fn=None,
                normalizer_params=None,
                weights_normalizer_fn=None,
                weights_normalizer_params=None,
                weights_initializer=tf.glorot_uniform_initializer(),
                weights_regularizer=None,
                biases_initializer=tf.zeros_initializer(),
                biases_regularizer=None,
                reuse=None,
                trainable=True,
                scope=None)

Source from the content-addressed store, hash-verified

65
66
67def convolution(inputs,
68 num_outputs,
69 kernel_size,
70 stride=1,
71 padding='SAME',
72 data_format=None,
73 rate=1,
74 activation_fn=None,
75 normalizer_fn=None,
76 normalizer_params=None,
77 weights_normalizer_fn=None,
78 weights_normalizer_params=None,
79 weights_initializer=tf.glorot_uniform_initializer(),
80 weights_regularizer=None,
81 biases_initializer=tf.zeros_initializer(),
82 biases_regularizer=None,
83 reuse=None,
84 trainable=True,
85 scope=None):
86 with tf.variable_scope(scope, 'convolution', reuse=reuse):
87 conv_dims = inputs.shape.rank - 2
88 kernel_size = kernel_size if isinstance(kernel_size, (list, tuple)) else [kernel_size] * conv_dims
89 stride = stride if isinstance(stride, (list, tuple)) else [stride] * conv_dims
90 rate = rate if isinstance(rate, (list, tuple)) else [rate] * conv_dims
91 if data_format is None or data_format.endswith('C'):
92 num_inputs = inputs.shape[-1]
93 elif data_format.startswith('NC'):
94 num_inputs = inputs.shape[1]
95 else:
96 raise ValueError('Invalid data_format')
97
98 weights = tf.get_variable('weights',
99 shape=list(kernel_size) + [num_inputs, num_outputs],
100 initializer=weights_initializer,
101 regularizer=weights_regularizer,
102 trainable=trainable)
103 if weights_normalizer_fn is not None:
104 weights_normalizer_params = weights_normalizer_params or {}
105 weights = weights_normalizer_fn(weights, **weights_normalizer_params)
106
107 outputs = tf.nn.convolution(input=inputs,
108 filter=weights,
109 dilation_rate=rate,
110 strides=stride,
111 padding=padding,
112 data_format=data_format)
113
114 if normalizer_fn is not None:
115 normalizer_params = normalizer_params or {}
116 outputs = normalizer_fn(outputs, **normalizer_params)
117 else:
118 if biases_initializer is not None:
119 biases = tf.get_variable('biases',
120 shape=[num_outputs],
121 initializer=biases_initializer,
122 regularizer=biases_regularizer,
123 trainable=trainable)
124 outputs = tf.nn.bias_add(outputs, biases, data_format=data_format)

Callers

nothing calls this directly

Calls 1

activation_fnFunction · 0.85

Tested by

no test coverage detected