in utils.py [0:0]
def conv_block_3d(
inp,
cweight,
bweight,
reuse,
scope,
use_stride=True,
activation=tf.nn.leaky_relu,
pn=False,
bn=False,
gn=False,
ln=False,
scale=None,
bias=None,
use_bias=False):
""" Perform, conv, batch norm, nonlinearity, and max pool """
stride, no_stride = [1, 1, 2, 2, 1], [1, 1, 1, 1, 1]
_, d, h, w, _ = inp.get_shape()
if not use_bias:
bweight = 0
if not use_stride:
conv_output = tf.nn.conv3d(inp, cweight, no_stride, 'SAME') + bweight
else:
conv_output = tf.nn.conv3d(inp, cweight, stride, 'SAME') + bweight
if activation is not None:
conv_output = activation(conv_output, alpha=0.1)
if bn:
conv_output = batch_norm(conv_output, scale, bias)
if pn:
conv_output = pixel_norm(conv_output)
if gn:
conv_output = group_norm(conv_output, scale, bias)
if ln:
conv_output = layer_norm(conv_output, scale, bias)
if FLAGS.downsample and use_stride:
conv_output = tf.layers.average_pooling2d(conv_output, (2, 2), 2)
return conv_output