Introduccion al tipo de dato básico para la construccion de redes neuronales
Así como las matrices son listas de vectores y los vectores son listas de escalares (numeros), un tensor es una version más genérica de estas listas numéricas. podemos decir que:
- Escalar -> Tensor de 0 dimensiones
- Vector -> Tensor de 1 dimensión
- Matriz -> Tensor de 2 dimensiones
Si agregamos n dimensiones entonces tenemos un tensor enedimensional
Los fameworks de deep learning se basan en la manipulación de vectores, por tanto es necesario definir este tipo de dato
import numpy as np
class Tensor(object):
def __init__(self, data):
'''
Inicializa un tensor utilizando numpy
@data: una lista de numeros
'''
self.data = np.array(data)
def __add__(self, other):
'''
@other: un Tensor
'''
return Tensor(self.data + other.data)
def __repr__(self):
return str(self.data.__repr__())
def __str__(self):
return str(self.data.__str__())
La nueva clase Tensor es capaz de soportar operaciones como suma de tensores
x = Tensor([1,2,3,4])
y = Tensor([4,3,2,1])
z = x + y
print(x)
print(z)
En el siguiente notebook se empezará a añadir la capacidad de calcular gradientes de forma automática