in utils/symbol/symbol_octconv.py [0:0]
def FullyConnected(data, num_hidden, no_bias=True, name=None):
data_h, data_l = data if type(data) is tuple else (data, None)
num_high, num_low = num_hidden if type(num_hidden) is tuple else (num_hidden, 0)
assert num_high >= 0 and num_low >= 0
data_h2l, data_h2h, data_l2l, data_l2h = None, None, None, None
if data_h is not None:
data_h2h = mx.sym.FullyConnected(data=data_h, num_hidden=num_high, no_bias=no_bias, name=('%s-h2h' % name)) if num_high > 0 else None
data_h2l = mx.sym.FullyConnected(data=data_h, num_hidden=num_low, no_bias=no_bias, name=('%s-h2l' % name)) if num_low > 0 else None
if data_l is not None:
data_l2h = mx.sym.FullyConnected(data=data_l, num_hidden=num_high, no_bias=True, name=('%s-l2h' % name)) if num_high > 0 else None
data_l2l = mx.sym.FullyConnected(data=data_l, num_hidden=num_low, no_bias=True, name=('%s-l2l' % name)) if num_low > 0 else None
output = ElementWiseSum(*[(data_h2h, data_h2l), (data_l2h, data_l2l)], name=name)
# squeeze output (to be backward compatible)
return output[0] if output[1] is None else output