Señales
Señales
Señales
El propósito y la importancia
La importancia del perceptrón multicapa radica en su capacidad para
realizar tareas complejas de clasificación y predicción de manera precisa y
eficiente. (Garcia et al., 2021)
Objetivos
Capa oculta
En el gráfico de 2 dimensiones se
utiliza la derivada para hallar su
mínimo (descenso mediante
gradiente)
Ejemplo de aplicación:
“Adaptive gradient methods with
dynamic bound of learning rate" de
C. You, W. Hu, Y. Tian, Y. Liu, y L.
Lin
Funciones de activación
ReLU(x)=max(0,x)
y = torch.relu(x)
plt.plot(x.detach(), y.detach())
derivada de ReLU
y.backward(torch.ones_like(x), retain_graph=True)
plt.plot(x.detach(), x.grad)
pReLU
RESULTADOS
loss = nn.CrossEntropyLoss(reduction='none')
trainer = torch.optim.SGD(net.parameters(), lr=lr)
#Ejemplo de dataloader para FAshin MNIST
librerías
import torch
def load_data_fashion_mnist(batch_size, resize=None):
from torch import nn
trans = [transforms.ToTensor()]
import torchvision
if resize:
from IPython import display
trans.insert(0, transforms.Resize(resize))
from torchvision import transforms
trans = transforms.Compose(trans)
from torch.utils import data
mnist_train = torchvision.datasets.FashionMNIST(
root="../data", train=True, transform=trans,
modelo
download=True)
net = nn.Sequential(nn.Flatten(),
mnist_test = torchvision.datasets.FashionMNIST(
nn.Linear(784, 256),
root="../data", train=False, transform=trans,
nn.ReLU(),
download=True)
nn.Linear(256, 10))
return (data.DataLoader(mnist_train, batch_size,
def init_weights(m):
shuffle=True,
if type(m) == nn.Linear:
num_workers=1),
nn.init.normal_(m.weight, std=0.01)
data.DataLoader(mnist_test, batch_size,
net.apply(init_weights);
shuffle=False,
num_workers=1))
def accuracy(y_hat, y):
for epoch in range(num_epochs):
"""Compute the number of correct predictions."""
L = 0.0
if len(y_hat.shape) > 1 and y_hat.shape[1] > 1:
N = 0
y_hat = y_hat.argmax(axis=1)
Acc = 0.0
cmp = y_hat.type(y.dtype) == y
TestAcc = 0.0
return float(cmp.type(y.dtype).sum()) TestN = 0
for X, y in train_iter:
train_iter, test_iter = l = loss(net(X) ,y)
load_data_fashion_mnist(batch_size) trainer.zero_grad()
l.mean().backward()
trainer.step()
L += l.sum()
N += l.numel()
Acc += accuracy(net(X), y)
for X, y in test_iter:
TestN += y.numel()
TestAcc += accuracy(net(X), y)
print(f'epoch {epoch + 1}, loss {(L/N):f}\
, train accuracy {(Acc/N):f}, test
accuracy {(TestAcc/TestN):f}')
Resultados
porcentaje de aprendizaje
ejemplo:En caso donde la Red neuronal aprendiendo
un juego
Resultados
DISCUSIÓN
● Luego de analizar 3 tipos de funciones de activación nos dimos cuenta que la más
eficiente es la tangente hiperbólica en comparación de la función sigmoidea y función
Relu ya que conserva mejor los valores tanto cuando están cerca a 0 y cuando es 0.
● También se concluye que las redes neuronales presentan múltiples ventajas en la
detección de anomalías pero estas están ligadas a la configuración y su aprendizaje .
● El trabajo de las redes ocultas es analizar los valores extraídos de la capa inicial solo
extrae la esencia de los patrones para luego multiplicarlo o combinarlo con la capa de
salida
Conclusiones
● Las redes Perceptrón multicapa son un tipo de modelo de aprendizaje automático que se
utilizan en el campo de la inteligencia artificial para clasificar y predecir resultados.
● Las redes perceptrón multicapa son capaces de procesar información compleja y de
aprender de ella a través de la retroalimentación y la ajuste de sus pesos sinápticos.
● Las redes perceptrón multicapa pueden ser aplicadas en una amplia variedad de problemas
de clasificación y predicción, como la identificación de spam, la detección de sentimiento en
reseñas de productos en línea y la predicción del resultado de eventos deportivos.
● Como se pudo observar en el código implementado es posible utilizar PyTorch para entrenar
una red neuronal para clasificar imágenes en varias clases.
Gracias.