Completed
Push — master ( f73e69...91b7c0 )
by Raphael
01:35
created

RegressionCost   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 9
Duplicated Lines 0 %
Metric Value
dl 0
loc 9
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __init__() 0 3 1
A get() 0 3 1
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3
4
import theano.tensor as T
5
6
class Cost(object):
7
8
    def get(self):
9
        return NotImplementedError()
10
11
class CrossEntropyCost(Cost):
12
13
    def __init__(self, result_tensor, index_tensor):
14
        self.result_tensor = result_tensor
15
        self.index_tensor = index_tensor
16
17
    def get(self):
18
        return -T.mean(T.log(self.result_tensor)[T.arange(self.index_tensor.shape[0]), self.index_tensor])
19
20
class RegressionCost(Cost):
21
22
    def __init__(self, result_tensor, target_tensor):
23
        self.result_tensor = result_tensor
24
        self.target_tensor = target_tensor
25
26
    def get(self):
27
        err = self.result_tensor - self.target_tensor
28
        return T.mean((err * err).sum(axis=self.target_tensor.ndim - 1)) / 2
29
30
class AutoEncoderCost(Cost):
31
32
    def __init__(self, result_tensor, target_tensor):
33
        self.result_tensor = result_tensor
34
        self.target_tensor = target_tensor
35
36
    def get(self):
37
        return T.sum((self.result_tensor - self.target_tensor)**2)
38
39
class ErrorRateCost(Cost):
40
41
    def __init__(self, result_tensor, index_tensor):
42
        self.result_tensor = result_tensor
43
        self.index_tensor = index_tensor
44
45
    def get(self):
46
        return 100 * T.mean(T.neq(T.argmax(self.result_tensor, axis=1), self.index_tensor))