Exemple #1
0
    def _forward(self, X, y):
        """Compute the forward of this loss, it includes the softmax and the 
        cross entropy itself.

        Formula based of the CrossEntropyLoss of Pytorch:
        https://pytorch.org/docs/stable/nn.html#torch.nn.CrossEntropyLoss
        """
        result = F.log(F.exp(X).sum(1)) - X[range(X.shape[0]), np.ravel(y.data)]
        if self.reduction == 'mean':
            return result.mean()
        elif self.reduction == 'sum':
            return result.sum()
        elif self.reduction == 'none':
            return result
        else:
            raise RuntimeError("Reduction not known")
Exemple #2
0
 def __call__(self, X):
     """Computes the forward pass."""
     y = None
     #######################################################################
     # TODO: Use the functional module to compute the first part of the
     # linear transfomation -> y = XW.T
     #######################################################################
     y = F.matmul(X, self.W.t())
     #######################################################################
     # --------------------------- END OF YOUR CODE ------------------------
     #######################################################################
     if self.bias:
         #######################################################################
         # TODO: If the bias is true add the bias.
         #######################################################################
         y = F.add(y, self.b)
         #######################################################################
         # --------------------------- END OF YOUR CODE ------------------------
         #######################################################################
     return y
 def forward(self, X):
     output = None
     #######################################################################
     # TODO: define your forward pass as follow
     #    1) y = linear(inputs)
     #    2) y_nl = relu(y)
     #    3) output = linear(y_nl)
     # softmax not needed because it's already in cross entropy
     #######################################################################
     y = self.firstLayer(X)
     y_nl = F.relu(y)
     output = self.secondLayer(y_nl)
     #######################################################################
     # --------------------------- END OF YOUR CODE ------------------------
     #######################################################################
     return output
Exemple #4
0
 def __truediv__(self, other):
     """."""
     from functional import F
     return F.div(self, other)
Exemple #5
0
 def __mul__(self, other):
     """."""
     from functional import F
     return F.mul(self, other)
Exemple #6
0
 def __sub__(self, other):
     """."""
     from functional import F
     return F.sub(self, other)
Exemple #7
0
 def __add__(self, other):
     """."""
     from functional import F
     return F.add(self, other)