diff --git a/__pycache__/models.cpython-37.pyc b/__pycache__/models.cpython-37.pyc index 1f9ab0a..d154790 100644 Binary files a/__pycache__/models.cpython-37.pyc and b/__pycache__/models.cpython-37.pyc differ diff --git a/machinelearning.token b/machinelearning.token new file mode 100644 index 0000000..9f58efb --- /dev/null +++ b/machinelearning.token @@ -0,0 +1 @@ +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 diff --git a/models.py b/models.py index 1378860..7468082 100644 --- a/models.py +++ b/models.py @@ -39,7 +39,7 @@ class PerceptronModel(object): Returns: 1 or -1 """ "*** YOUR CODE HERE ***" - result = nn.as_scalar(nn.DotProduct(x, self.w)) + result = nn.as_scalar(self.run(x)) if (result >= 0): return 1 return -1 @@ -49,12 +49,17 @@ class PerceptronModel(object): Train the perceptron until convergence. """ "*** YOUR CODE HERE ***" - batch_size = 1 - for x, y in dataset.iterate_once(batch_size): - print(x) - print(y) - result_y = self.run(x) - self.w.update(y, .2) + batch_size, cont = 1, True + while(cont): + result = 0 + for x, y in dataset.iterate_once(batch_size): + if (self.get_prediction(x) == nn.as_scalar(y)): + result += 0 + else: + self.w.update(x, nn.as_scalar(y)) + result += 1 + if (result == 0): + cont = False class RegressionModel(object): @@ -67,21 +72,15 @@ class RegressionModel(object): def __init__(self): # Initialize your model parameters here "*** YOUR CODE HERE ***" - model = object.__init__(self) - self.get_data_and_monitor = backend.RegressionDataset(model) - # Remember to set self.learning_rate! # You may use any learning rate that works well for your architecture "*** YOUR CODE HERE ***" - self.learning_rate = 0.1 - self.hidden_size = 300 + self.l1b = nn.Parameter(1, 100) + self.l1 = nn.Parameter(1, 100) + self.two = nn.Parameter(100, 1) + self.l2b = nn.Parameter(1, 1) - self.w1 = nn.Parameter(1, self.hidden_size) - self.w2 = nn.Parameter(self.hidden_size, self.hidden_size) - self.w3 = nn.Parameter(self.hidden_size, 1) - self.b1 = nn.Parameter(self.hidden_size) - self.b2 = nn.Parameter(self.hidden_size) - self.b3 = nn.Parameter(1) + self.multiplier = .01 def run(self, x): """ @@ -93,45 +92,9 @@ class RegressionModel(object): A node with shape (batch_size x 1) containing predicted y-values """ "*** YOUR CODE HERE ***" - self.graph = nn.DataNode( - [self.w1, self.w2, self.w3, self.b1, self.b2, self.b3]) - - if y is not None: - # At training time, the correct output `y` is known. - # Here, you should construct a loss node, and return the nn.Graph - # that the node belongs to. The loss node must be the last node - # added to the graph. - "*** YOUR CODE HERE ***" - input_x = nn.Constant(x) - input_y = nn.Constant(y) - xw1 = nn.MatrixMultiply(self.graph, input_x, self.w1) - xw1_plus_b1 = nn.MatrixVectorAdd(self.graph, xw1, self.b1) - l1 = nn.ReLU(self.graph, xw1_plus_b1) - l1w2 = nn.MatrixMultiply(self.graph, l1, self.w2) - l2w2_plus_b2 = nn.MatrixVectorAdd(self.graph, l1w2, self.b2) - l2 = nn.ReLU(self.graph, l2w2_plus_b2) - l2w3 = nn.MatrixMultiply(self.graph, l2, self.w3) - l2w3_plus_b3 = nn.MatrixVectorAdd(self.graph, l2w3, self.b3) - loss = nn.SquareLoss(self.graph, l2w3_plus_b3, input_y) - - return self.graph - - else: - # At test time, the correct output is unknown. - # You should instead return your model's prediction as a numpy array - "*** YOUR CODE HERE ***" - input_x = nn.Input(self.graph, x) - - xw1 = nn.MatrixMultiply(self.graph, input_x, self.w1) - xw1_plus_b1 = nn.MatrixVectorAdd(self.graph, xw1, self.b1) - l1 = nn.ReLU(self.graph, xw1_plus_b1) - l1w2 = nn.MatrixMultiply(self.graph, l1, self.w2) - l2w2_plus_b2 = nn.MatrixVectorAdd(self.graph, l1w2, self.b2) - l2 = nn.ReLU(self.graph, l2w2_plus_b2) - l2w3 = nn.MatrixMultiply(self.graph, l2, self.w3) - l2w3_plus_b3 = nn.MatrixVectorAdd(self.graph, l2w3, self.b3) - - return self.graph.get_output(l2w3_plus_b3) + # //composition of layers + return nn.AddBias(nn.Linear( + nn.ReLU(nn.AddBias(nn.Linear(x, self.l1), self.l1b)), self.two), self.l2b) def get_loss(self, x, y): """ @@ -144,12 +107,26 @@ class RegressionModel(object): Returns: a loss node """ "*** YOUR CODE HERE ***" + pred_y = self.run(x) + loss = nn.SquareLoss(pred_y, y) + return loss def train(self, dataset): """ Trains the model. """ "*** YOUR CODE HERE ***" + for x, y in dataset.iterate_forever(5): + fn_loss = self.get_loss(x, y) + if nn.as_scalar(fn_loss) <= 0.000007: + break + # //get gradients and continuosly udpate weights + grad_1, grad_b1, grad_2, grad_b2 = nn.gradients( + fn_loss, [self.l1, self.l1b, self.two, self.l2b]) + self.l1.update(grad_1, -self.multiplier) + self.l1b.update(grad_b1, -self.multiplier) + self.two.update(grad_2, -self.multiplier) + self.l2b.update(grad_b2, -self.multiplier) class DigitClassificationModel(object):