<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def linear(prev_layer, out_dim, name="linear"):
 """Create a linear fully-connected layer. Parameters prev_layer : tf.Tensor Last layer's output tensor. out_dim : int Number of output units. Returns ------- tuple ( tf.Tensor : Linear output tensor tf.Tensor : Linear weights variable tf.Tensor : Linear biases variable ) """

        with tf.name_scope(name):
            in_dim = prev_layer.get_shape()[1].value
            W = tf.Variable(tf.truncated_normal([in_dim, out_dim], stddev=0.1))
            b = tf.Variable(tf.constant(0.1, shape=[out_dim]))
            out = tf.add(tf.matmul(prev_layer, W), b)
            return (out, W, b)