I am trying to implement the tutorial given on Tensorflow tutorial on custom training. Due to some reason dW and DB is None. I am not getting why t.gradient() is returning None.
import tensorflow as tf
tf.enable_eager_execution()
class Model(object):
def __init__(self):
self.W = tf.Variable(5.0)
self.b = tf.Variable(0.0)
def __call__(self,x):
return self.W*x+self.b
def loss_function(self, y_true, y_predicted):
return tf.reduce_mean(tf.square(y_predicted-y_true))
def train(self, inputs, outputs, learning_rate):
with tf.GradientTape() as t:
current_loss = self.loss_function(inputs,outputs)
dW,db = t.gradient(current_loss,[self.W, self.b])
## dW and db returns None
self.W.assign_sub(learning_rate*dW)
self.b.assign_sub(learning_rate*db)
But the following code works fine when train is not a method of model. Any reason why?
import tensorflow as tf
tf.enable_eager_execution()
class Model(object):
def __init__(self):
self.W = tf.Variable(5.0)
self.b = tf.Variable(0.0)
def __call__(self,x):
return self.W*x+self.b
def loss_function(self, y_true, y_predicted):
return tf.reduce_mean(tf.square(y_predicted-y_true))
def train(model, inputs, outputs, learning_rate):
with tf.GradientTape() as t:
current_loss = model.loss_function(model(inputs),outputs)
dW,db = t.gradient(current_loss,[model.W, model.b])
## dW and db returns None
model.W.assign_sub(learning_rate*dW)
model.b.assign_sub(learning_rate*db)
JavaScript questions and answers, JavaScript questions pdf, JavaScript question bank, JavaScript questions and answers pdf, mcq on JavaScript pdf, JavaScript questions and solutions, JavaScript mcq Test , Interview JavaScript questions, JavaScript Questions for Interview, JavaScript MCQ (Multiple Choice Questions)