0 votes
1 view
in Machine Learning by (16k points)

I am trying to implement multivariate linear regression in Python using TensorFlow, but have run into some logical and implementation issues. My code throws the following error:

Attempting to use uninitialized value Variable

Caused by op u'Variable/read'

Ideally the weights output should be [2, 3]

def hypothesis_function(input_2d_matrix_trainingexamples,

                        output_matrix_of_trainingexamples,

                        initial_parameters_of_hypothesis_function,

                        learning_rate, num_steps):

    # calculate num attributes and num examples

    number_of_attributes = len(input_2d_matrix_trainingexamples[0])

    number_of_trainingexamples = len(input_2d_matrix_trainingexamples)

    #Graph inputs

    x = []

    for i in range(0, number_of_attributes, 1):

        x.append(tf.placeholder("float"))

    y_input = tf.placeholder("float")

    # Create Model and Set Model weights

    parameters = []

    for i in range(0, number_of_attributes, 1):

        parameters.append(

            tf.Variable(initial_parameters_of_hypothesis_function[i]))

    #Contruct linear model

    y = tf.Variable(parameters[0], "float")

    for i in range(1, number_of_attributes, 1):

        y = tf.add(y, tf.multiply(x[i], parameters[i]))

    # Minimize the mean squared errors

    loss = tf.reduce_mean(tf.square(y - y_input))

    optimizer = tf.train.GradientDescentOptimizer(learning_rate)

    train = optimizer.minimize(loss)

    #Initialize the variables

    init = tf.initialize_all_variables()

    # launch the graph

    session = tf.Session()

    session.run(init)

    for step in range(1, num_steps + 1, 1):

        for i in range(0, number_of_trainingexamples, 1):

            feed = {}

            for j in range(0, number_of_attributes, 1):

                array = [input_2d_matrix_trainingexamples[i][j]]

                feed[j] = array

            array1 = [output_matrix_of_trainingexamples[i]]

            feed[number_of_attributes] = array1

            session.run(train, feed_dict=feed)

    for i in range(0, number_of_attributes - 1, 1):

        print (session.run(parameters[i]))

array = [[0.0, 1.0, 2.0], [0.0, 2.0, 3.0], [0.0, 4.0, 5.0]]

hypothesis_function(array, [8.0, 13.0, 23.0], [1.0, 1.0, 1.0], 0.01, 200)

1 Answer

0 votes
by (33.2k points)

Your code syntax is not clear to me, but I tried to understand the problem somehow.

The list Initial_parameters_of_hypothesis_function is a list of tf.Variable objects, then the line session.run(init) will fail because TensorFlow can’t compute to figure out the dependencies in variable initialization.

You can simply change the loop that creates parameters to use initial_parameters_of_hypothesis_function[i].initialized_value(), which adds the necessary dependency:

parameters = [] 

for i in range(0, number_of_attributes, 1): 

parameters.append(tf.Variable( initial_parameters_of_hypothesis_function[i].initialized_value()))

Hope this answer helps.

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...