title: How to fix MatMul Op has type float64 that does not match type float32 TypeError?
body: <p>I am trying to save Nueral Network weights into a file and then restoring those weights by initializing the network instead of random initialization. My code works fine with random initialization. But, when i initialize weights from file it is showing me an error <code>TypeError: Input 'b' of 'MatMul' Op has type float64 that does not match type float32 of argument 'a'.</code> I don't know how do i solve this issue.Here is my code:</p>
  
  <p><strong>Model Initialization</strong></p>
  
  <pre><code># Parameters
  training_epochs = 5
  batch_size = 64
  display_step = 5
  batch = tf.Variable(0, trainable=False)
  regualarization =  0.008
  
  # Network Parameters
  n_hidden_1 = 300 # 1st layer num features
  n_hidden_2 = 250 # 2nd layer num features
  
  n_input = model.layer1_size # Vector input (sentence shape: 30*10)
  n_classes = 12 # Sentence Category detection total classes (0-11 categories)
  
  #History storing variables for plots
  loss_history = []
  train_acc_history = []
  val_acc_history = []
  
  # tf Graph input
  x = tf.placeholder("float", [None, n_input])
  y = tf.placeholder("float", [None, n_classes])
  </code></pre>
  
  <p><strong>Model parameters</strong></p>
  
  <pre><code>#loading Weights
  def weight_variable(fan_in, fan_out, filename):
      stddev = np.sqrt(2.0/fan_in)
      if (filename == ""):
          initial  = tf.random_normal([fan_in,fan_out], stddev=stddev)
      else:
          initial  = np.loadtxt(filename)
      print initial.shape
      return tf.Variable(initial)
  
  #loading Biases
  def bias_variable(shape, filename):
      if (filename == ""):
       initial = tf.constant(0.1, shape=shape)
      else:
       initial  = np.loadtxt(filename)  
      print initial.shape
      return tf.Variable(initial)
  
  # Create model
  def multilayer_perceptron(_X, _weights, _biases):
      layer_1 = tf.nn.relu(tf.add(tf.matmul(_X, _weights['h1']), _biases['b1'])) 
      layer_2 = tf.nn.relu(tf.add(tf.matmul(layer_1, _weights['h2']), _biases['b2'])) 
      return tf.matmul(layer_2, weights['out']) + biases['out']  
  
  # Store layers weight &amp; bias
  weights = {
  'h1':  w2v_utils.weight_variable(n_input, n_hidden_1,    filename="weights_h1.txt"),
  'h2':  w2v_utils.weight_variable(n_hidden_1, n_hidden_2, filename="weights_h2.txt"),
  'out': w2v_utils.weight_variable(n_hidden_2, n_classes,  filename="weights_out.txt") 
  }
  
   biases = {
  'b1': w2v_utils.bias_variable([n_hidden_1], filename="biases_b1.txt"),
  'b2': w2v_utils.bias_variable([n_hidden_2], filename="biases_b2.txt"),
  'out': w2v_utils.bias_variable([n_classes], filename="biases_out.txt")
  }
  
  # Define loss and optimizer
  #learning rate
  # Optimizer: set up a variable that's incremented once per batch and
  # controls the learning rate decay.
  learning_rate = tf.train.exponential_decay(
      0.02*0.01,           # Base learning rate. #0.002
      batch * batch_size,  # Current index into the dataset.
      X_train.shape[0],    # Decay step.
      0.96,                # Decay rate.
      staircase=True)
  
  
  # Construct model
  pred = tf.nn.relu(multilayer_perceptron(x, weights, biases))
  
  #L2 regularization
  l2_loss = tf.add_n([tf.nn.l2_loss(v) for v in tf.trainable_variables()])
  
  #Softmax loss
  cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y)) 
  
  #Total_cost
  cost = cost+ (regualarization*0.5*l2_loss)
  
  # Adam Optimizer
  optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost,global_step=batch)
  
  
  # Add ops to save and restore all the variables.
  saver = tf.train.Saver()
  
  # Initializing the variables
  init = tf.initialize_all_variables()
  
  print "Network Initialized!"
  </code></pre>
  
  <p><strong>ERROR DETAILS</strong>
  <a href="https://i.stack.imgur.com/2ZNj9.png" rel="noreferrer"><img src="https://i.stack.imgur.com/2ZNj9.png" alt="enter image description here"></a></p>