Matrix Multiplication using TensorFlow MATMUL

On this post I get to share my current Machine Learning repository, the first exercise that I did was on Matrix Multiplication using Tensor flow. Welcome to my Machine Learning Journey. 

This is just a simple Matrix Multiplication using Tensor flow matmul.

# Copyright (C) 2018 Madonah Syombua
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
   
  # http://www.apache.org/licenses/LICENSE-2.0
   
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  import tensorflow as tf
   
   
  '''
  Created on Sun April 22 10:16:55 2018
   
  @author: madona
   
   
   
   
  Playing around with Matrix:
   
  X = [x1,x2,x3] = [1,4,0,2,3,3,0,1,1]
   
  W_1 = [0,2,0,1,3,1,4,0,1]
  W_2 = [1,0,1,0,1,1,2,0,1]
  W_3 = [0,0,1,1,0,1,1,1,1]
  W_4 = [1,0,1,0,1,1,1,1,0]
  W_5 = [1,0,1]
   
  We have
   
  y_1 = 2; y_2= 4; y_3 = 1;
   
  for j = 1,2,3
   
  find;
   
  X_j ^T W_1W_2W_3W_4W_5 - y_j
   
  So the idea is to understand if you get one you are fine :)
   
  So this will be:
   
   
  X_1^T W_1W_2W_3W_4W_5 - Y_1 = 76.
   
  Based on this example one should be able to solve for y2 and y3 but remember to check the X_transpose.
  X_2^T W_1W_2W_3W_4W_5 - Y_2
  X_3^T W_1W_2W_3W_4W_5 - Y_3
   
   
  '''
   
  print("This Exercise is based on issue number 18")
   
  #So in this case i will solve X_1^T W_1W_2W_3W_4W_5 - Y_1 = 76
   
  X = tf.constant([1,2,0], shape=[3,1])
  Y_1 = 2
  W_1 = tf.constant([0,2,0,1,3,1,4,0,1],shape =[3,3])
  W_2 = tf.constant([1,0,1,0,1,1,2,0,1], shape = [3,3])
  W_3 = tf.constant([0,0,1,1,0,1,1,1,1], shape =[3,3])
  W_4 = tf.constant([1,0,1,0,1,1,1,1,0], shape = [3,3])
  W_5 = tf.constant([1,0,1],shape = [3,1])
   
   
  X_transpose = tf.transpose(X)
  sess = tf.Session()
   
  print("X_transpose", sess.run(X_transpose))
   
  print("\n")
   
  Y = tf.matmul(X_transpose, W_1)
  sess = tf.Session()
  with sess.as_default():
  Y.eval()
  print("X_transposeW_1=",sess.run(Y))
  print("\n")
   
  Y = tf.matmul(Y, W_2)
  sess = tf.Session()
   
  with sess.as_default():
  Y.eval()
  print("X_transposeW_1W_2=",sess.run(Y))
  print("\n")
   
  Y = tf.matmul(Y, W_3)
  sess = tf.Session()
  with sess.as_default():
  Y.eval()
  print("X_transposeW_1W_2_W_3=",sess.run(Y))
  print("\n")
  Y = tf.matmul(Y, W_4)
  sess = tf.Session()
   
  with sess.as_default():
  Y.eval()
  print("X_transposeW_1W_2W_3W_4=",sess.run(Y))
  print("\n")
  Y = tf.matmul(Y, W_5)
  sess = tf.Session()
  with sess.as_default():
  Y.eval()
  print("X_transposeW_1W_2_W_3W_4W_5=",sess.run(Y))
   
   
  print("Final Solution", sess.run(Y) - Y_1)
  print("\n")
   
   
   
  #I will try to solve x2, X_2^T W_1W_2W_3W_4W_5 - Y_2 , we know y_2 = 4. We can take x2^transpose
  # Rule Row, Column and it is always good to try to them on paper first. What changes on my second code
  #is just the x2 transpose. instead of [1,2,0] i will now have [4,3,1] and Y2 = 4 and introduce variable K
   
  print("Start Example 2 solving x_2")
  print("\n")
   
  X = tf.constant([4,3,1], shape=[3,1])
  Y_2 = 4
  W_1 = tf.constant([0,2,0,1,3,1,4,0,1],shape =[3,3])
  W_2 = tf.constant([1,0,1,0,1,1,2,0,1], shape = [3,3])
  W_3 = tf.constant([0,0,1,1,0,1,1,1,1], shape =[3,3])
  W_4 = tf.constant([1,0,1,0,1,1,1,1,0], shape = [3,3])
  W_5 = tf.constant([1,0,1],shape = [3,1])
   
   
  X_transpose = tf.transpose(X)
  sess = tf.Session()
   
  print("X_transpose", sess.run(X_transpose))
   
  print("\n")
   
  K = tf.matmul(X_transpose, W_1)
  sess = tf.Session()
  with sess.as_default():
  K.eval()
  print("X_transposeW_1=",sess.run(K))
  print("\n")
   
  K = tf.matmul(K, W_2)
  sess = tf.Session()
   
  with sess.as_default():
  K.eval()
  print("X_transposeW_1W_2=",sess.run(K))
  print("\n")
   
  K = tf.matmul(K, W_3)
  sess = tf.Session()
  with sess.as_default():
  K.eval()
  print("X_transposeW_1W_2_W_3=",sess.run(K))
  print("\n")
  K = tf.matmul(K, W_4)
  sess = tf.Session()
   
  with sess.as_default():
  K.eval()
  print("X_transposeW_1W_2W_3W_4=",sess.run(K))
  print("\n")
  K = tf.matmul(K, W_5)
  sess = tf.Session()
  with sess.as_default():
  K.eval()
  print("X_transposeW_1W_2_W_3W_4W_5=",sess.run(K))
   
   
  print("\n")
   
  print("Final Solution", sess.run(K) - Y_2)
   
  print("\n")
   
  # Finalizing the problem. x3, X_3^T W_1W_2W_3W_4W_5 - Y_3 , I will introduce variable n
   
  print("Start Example 3 solving x_3")
  print("\n")
   
  X = tf.constant([0,3,1], shape=[3,1])
  Y_3 = 1
  W_1 = tf.constant([0,2,0,1,3,1,4,0,1],shape =[3,3])
  W_2 = tf.constant([1,0,1,0,1,1,2,0,1], shape = [3,3])
  W_3 = tf.constant([0,0,1,1,0,1,1,1,1], shape =[3,3])
  W_4 = tf.constant([1,0,1,0,1,1,1,1,0], shape = [3,3])
  W_5 = tf.constant([1,0,1],shape = [3,1])
   
   
  X_transpose = tf.transpose(X)
  sess = tf.Session()
   
  print("X_transpose", sess.run(X_transpose))
   
  print("\n")
   
  n = tf.matmul(X_transpose, W_1)
  sess = tf.Session()
  with sess.as_default():
  n.eval()
  print("X_transposeW_1=",sess.run(n))
  print("\n")
   
  n = tf.matmul(n, W_2)
  sess = tf.Session()
   
  with sess.as_default():
  n.eval()
  print("X_transposeW_1W_2=",sess.run(n))
  print("\n")
   
  n = tf.matmul(n, W_3)
  sess = tf.Session()
  with sess.as_default():
  n.eval()
  print("X_transposeW_1W_2_W_3=",sess.run(n))
  print("\n")
  n = tf.matmul(n, W_4)
  sess = tf.Session()
   
  with sess.as_default():
  n.eval()
  print("X_transposeW_1W_2W_3W_4=",sess.run(n))
  print("\n")
  n = tf.matmul(n, W_5)
  sess = tf.Session()
  with sess.as_default():
  n.eval()
  print("X_transposeW_1W_2_W_3W_4W_5=",sess.run(n))
   
   
  print("\n")
   
  print("Final Solution", sess.run(n) - Y_3)

 Get Code Here.