def point_cloud_generator(z, pc_dims, layer_sizes=[64, 128, 512, 1024], non_linearity=tf.nn.relu, b_norm=False, b_norm_last=False, dropout_prob=None):
    ' used in nips submission.\n    '
    (n_points, dummy) = pc_dims
    if (dummy != 3):
        raise ValueError()
    out_signal = decoder_with_fc_only(z, layer_sizes=layer_sizes, non_linearity=non_linearity, b_norm=b_norm)
    out_signal = non_linearity(out_signal)
    if (dropout_prob is not None):
        out_signal = dropout(out_signal, dropout_prob)
    if b_norm_last:
        out_signal = batch_normalization(out_signal)
    out_signal = fully_connected(out_signal, np.prod([n_points, 3]), activation='linear', weights_init='xavier')
    out_signal = tf.reshape(out_signal, [(- 1), n_points, 3])
    return out_signal
used in nips submission.
def point_cloud_generator(z, pc_dims, layer_sizes=[64, 128, 512, 1024], non_linearity=tf.nn.relu, b_norm=False, b_norm_last=False, dropout_prob=None):
    ' \n    '
    (n_points, dummy) = pc_dims
    if (dummy != 3):
        raise ValueError()
    out_signal = decoder_with_fc_only(z, layer_sizes=layer_sizes, non_linearity=non_linearity, b_norm=b_norm)
    out_signal = non_linearity(out_signal)
    if (dropout_prob is not None):
        out_signal = dropout(out_signal, dropout_prob)
    if b_norm_last:
        out_signal = batch_normalization(out_signal)
    out_signal = fully_connected(out_signal, np.prod([n_points, 3]), activation='linear', weights_init='xavier')
    out_signal = tf.reshape(out_signal, [(- 1), n_points, 3])
    return out_signal