Esempio n. 1
0
def addFilterNodeB(layerNodeB):

    newFilterShape = list(layerNodeB.filters[0].shape)
    newFilterShape[0] += 1

    auxFilter = Functions.createTensorRandom((2, newFilterShape[0]))
    auxFilter_der = Functions.createTensorRandom((2, newFilterShape[0]))
    auxFilter_der_total = Functions.createTensorRandom((2, newFilterShape[0]))

    auxFilter[0] = Functions.createNewTensor(layerNodeB.filters[0],
                                             newFilterShape)
    auxFilter[1] = Functions.createNewTensor(layerNodeB.filters[1],
                                             newFilterShape)

    auxFilter_der[0] = Functions.createNewTensor(layerNodeB.filter_der[0],
                                                 newFilterShape)
    auxFilter_der[1] = Functions.createNewTensor(layerNodeB.filter_der[1],
                                                 newFilterShape)

    auxFilter_der_total[0] = Functions.createNewTensor(
        layerNodeB.filter_der_total[0], newFilterShape)
    auxFilter_der_total[1] = Functions.createNewTensor(
        layerNodeB.filter_der_total[1], newFilterShape)

    layerNodeB.filters = auxFilter
    layerNodeB.filter_der = auxFilter_der
    layerNodeB.filter_der_total = auxFilter_der_total
Esempio n. 2
0
def deleteFilterNodeB(layerNodeB):

    newShape = list(layerNodeB.filters[0].shape)

    if newShape[0] > 0:
        newShape[0] -= 1

    auxFilter = Functions.createTensorRandom((2, newShape[0]))
    auxFilter_der = Functions.createTensorRandom((2, newShape[0]))
    auxFilter_der_total = Functions.createTensorRandom((2, newShape[0]))

    auxFilter[0] = Functions.deleteLastTensorDimension(layerNodeB.filters[0],
                                                       newShape)
    auxFilter[1] = Functions.deleteLastTensorDimension(layerNodeB.filters[1],
                                                       newShape)

    auxFilter_der[0] = Functions.deleteLastTensorDimension(
        layerNodeB.filter_der[0], newShape)
    auxFilter_der[1] = Functions.deleteLastTensorDimension(
        layerNodeB.filter_der[1], newShape)

    auxFilter_der_total[0] = Functions.deleteLastTensorDimension(
        layerNodeB.filter_der_total[0], newShape)
    auxFilter_der_total[1] = Functions.deleteLastTensorDimension(
        layerNodeB.filter_der_total[1], newShape)

    layerNodeB.filters = auxFilter
    layerNodeB.filter_der = auxFilter_der
    layerNodeB.filter_der_total = auxFilter_der_total
Esempio n. 3
0
def deleteFilterNodeA(layerNodeA):

    layerNodeB = layerNodeA.node.kids[0].objects[0]

    newShape = list(layerNodeA.filters.shape)

    if newShape[0] > 0:
        newShape[0] -= 1

    layerNodeA.filters = Functions.deleteLastTensorDimension(
        layerNodeA.filters, newShape)
    layerNodeA.filter_der = Functions.deleteLastTensorDimension(
        layerNodeA.filter_der, newShape)
    layerNodeA.filter_der_total = Functions.deleteLastTensorDimension(
        layerNodeA.filter_der_total, newShape)

    newKidValueShape = [len(layerNodeA.filters)]

    layerNodeB.value = Functions.deleteLastTensorDimension(
        layerNodeB.value, newKidValueShape)
    layerNodeB.value_der = Functions.deleteLastTensorDimension(
        layerNodeB.value_der, newKidValueShape)
    layerNodeB.value_der_total = Functions.deleteLastTensorDimension(
        layerNodeB.value_der_total, newKidValueShape)

    layerNodeB.bias = Functions.deleteLastTensorDimension(
        layerNodeB.bias, newKidValueShape)
    layerNodeB.bias_der = Functions.deleteLastTensorDimension(
        layerNodeB.bias_der, newKidValueShape)
    layerNodeB.bias_der_total = Functions.deleteLastTensorDimension(
        layerNodeB.bias_der_total, newKidValueShape)
Esempio n. 4
0
def addFilterNodeA(layerNodeA):

    layerNodeB = layerNodeA.node.kids[0].objects[0]

    newFilterShape = list(layerNodeA.filters.shape)
    newFilterShape[0] += 1

    layerNodeA.filters = Functions.createNewTensor(layerNodeA.filters,
                                                   newFilterShape)

    layerNodeA.filter_der = Functions.createNewTensor(layerNodeA.filter_der,
                                                      newFilterShape)

    layerNodeA.filter_der_total = Functions.createNewTensor(
        layerNodeA.filter_der_total, newFilterShape)

    newValueKidShape = [len(layerNodeA.filters)]

    layerNodeB.value = Functions.createNewTensor(layerNodeB.value,
                                                 newValueKidShape)
    layerNodeB.value_der = Functions.createNewTensor(layerNodeB.value_der,
                                                     newValueKidShape)
    layerNodeB.value_der_total = Functions.createNewTensor(
        layerNodeB.value_der_total, newValueKidShape)

    layerNodeB.bias = Functions.createNewTensor(layerNodeB.bias,
                                                newValueKidShape)
    layerNodeB.bias_der = Functions.createNewTensor(layerNodeB.bias_der,
                                                    newValueKidShape)
    layerNodeB.bias_der_total = Functions.createNewTensor(
        layerNodeB.bias_der_total, newValueKidShape)
Esempio n. 5
0
    def Train(self, dataElement, peso, n):
        self.Reset_der
        self.nodes[0].objects[0].value = dataElement[0]
        #self.nodes[3].objects[0].label = dataElement[1]

        self.assign_labels(dataElement[1])

        Functions.Propagation(self.nodes[4].objects[0])
        Functions.BackPropagation(self.nodes[0].objects[0])

        self.Acumulate_der(n, peso)
Esempio n. 6
0
    def Predict(self, image):
        self.assign_labels("c")
        self.nodes[0].objects[0].value = image[0]

        Functions.Propagation(self.nodes[4].objects[0])

        return self.nodes[3].objects[0].value
Esempio n. 7
0
def Test_node_0(network, n=1000, dt=0.1):
    k = 0
    layer_f = network.nodes[4].objects[0]
    layer_i = network.nodes[0].objects[0]
    while k < n:
        network.Predict(layer_i.value)
        network.assign_labels("n")
        network.Reset_der_total()
        #j=1
        #while j<5:
        #layer=network.nodes[j].objects[0]
        #layer.propagate(layer)
        #j=j+1

        #layer_i.backPropagate(layer_i)
        Functions.Propagation(layer_f)
        Functions.BackPropagation(layer_i)
        network.Acumulate_der(1)
        network.Update(dt)
        #print("value of layer_f: ", layer_f.value)
        #print("value of layer_f: ", layer_f.node.parents[0].objects[0].value)
        #print("value_der nodo 3: ", network.nodes[3].objects[0].value_der)
        k = k + 1
Esempio n. 8
0
def createLayerB(nodeB, objects):

    layer = Layer(nodeB)
    layerParent = nodeB.parents[0].objects[0]

    layer.propagate = Functions.ProductoPunto
    layer.backPropagate = Functions.b_filter_der

    layer.filters = Functions.createTensorRandom((2, objects[2]))
    layer.filter_der = Functions.createTensorRandom(layer.filters.shape)
    layer.filter_der_total = Functions.createTensorRandom(layer.filters.shape)

    layer.value = Functions.createTensorRandom(len(layerParent.filters))
    layer.value_der = Functions.createTensorRandom(layer.value.shape)
    layer.value_der_total = Functions.createTensorRandom(layer.value.shape)

    layer.bias = Functions.createTensorRandom(layer.value.shape)
    layer.bias_der = Functions.createTensorRandom(layer.value.shape)
    layer.bias_der_total = Functions.createTensorRandom(layer.value.shape)

    return layer
Esempio n. 9
0
def createLayerA(nodeA, objects):
    layer = Layer(nodeA)

    layer.propagate = Functions.Nothing
    layer.backPropagate = Functions.a_filter_der

    layer.filters = Functions.createTensorRandom(
        (objects[2], objects[0], objects[1], 3))
    layer.bias = Functions.createTensorRandom((objects[0], objects[1], 3))
    layer.value = Functions.createTensorRandom((objects[0], objects[1], 3))

    layer.filter_der = Functions.createTensorRandom(layer.filters.shape)
    layer.filter_der_total = Functions.createTensorRandom(layer.filters.shape)

    layer.value_der = Functions.createTensorRandom(layer.value.shape)
    layer.value_der_total = Functions.createTensorRandom(layer.value.shape)

    layer.bias_der = Functions.createTensorRandom(layer.bias.shape)
    layer.bias_der_total = Functions.createTensorRandom(layer.bias.shape)

    return layer
Esempio n. 10
0
def createLayerD(nodeD):

    layer = Layer(nodeD)

    layer.propagate = Functions.probability
    layer.backPropagate = Functions.probability_der

    layer.value = Functions.generateNumberRandom()
    layer.value_der = Functions.generateNumberRandom()
    layer.value_der_total = Functions.generateNumberRandom()

    layer.bias = Functions.generateNumberRandom()
    layer.bias_der = Functions.generateNumberRandom()
    layer.bias_der_total = Functions.generateNumberRandom()

    return layer
Esempio n. 11
0
def createLayerE(nodeE):

    layer = Layer(nodeE)

    layer.propagate = Functions.logaritmo
    layer.backPropagate = Functions.Nothing

    layer.value = Functions.generateNumberRandom()
    layer.value_der = Functions.generateNumberRandom()
    layer.value_der_total = Functions.generateNumberRandom()

    layer.bias = Functions.generateNumberRandom()
    layer.bias_der = Functions.generateNumberRandom()
    layer.bias_der_total = Functions.generateNumberRandom()

    return layer
Esempio n. 12
0
def createLayerC(nodeC):

    layer = Layer(nodeC)
    layerParent = nodeC.parents[0].objects[0]

    layer.propagate = Functions.ProductoPunto
    layer.backPropagate = Functions.c_filter_der

    layer.value = Functions.createTensorRandom((len(layerParent.filters)))
    layer.value_der = Functions.createTensorRandom(layer.value.shape)
    layer.value_der_total = Functions.createTensorRandom(layer.value.shape)

    layer.bias = Functions.createTensorRandom(layer.value.shape)
    layer.bias_der = Functions.createTensorRandom(layer.value.shape)
    layer.bias_der_total = Functions.createTensorRandom(layer.value.shape)

    layer.label = "c"

    return layer