Creo que copiar y pegar codigo no es buena idea cuando explicas,solo se hace más confuso, ayudaria mucho poner el book de esta parte.
deacuerdo
Siiii y es horrible creí que era el único que le molestaba eso!!!
Hay que pausar miles de veces el video para copiar el codigo, ademas que muchas cosas no se explican de donde salieron y pues va super rápido por la forma en que editaron el video.
En conclusion copiar y pegar codigo no es muy pedagógico que digamos.....
El profesor piensa que todos tenemos bases, el curso esta mal enfocado y Pedagógicamente hablando es terrible un saludo
Totalmente de acuerdo no es que el profe no sepa sino que pedagógicamente mantenemos "llevaos".. en este momento me siento super perdido en todo.. empecé muy motivado pero la verdad ando muy desinflado de todo.. a veces no entiendo ni forro!!
Es muy complejo pretender seguir el código y comprender a la vez. Solo el codigo escrito de esa manera en Jupyter Notebook es muy denso y poco didactico. Muchisimas preguntas y poca claridad. Se asume que el estudiante puede seguir el ritmo pero no es asi. Ademas la implementacion en muy, MUUUY subjetiva.
Es un curso demasiado técnico. El 80% del tiempo es copiando y pegando código sin explicar la teoría detrás de cada implementación.
He sentido lo mismo en cada curso que he realizado. Lo que yo he hecho es investigar por mi parte los temas que no comprendo o las explicaciones de los temas. No dudes en preguntar si algo no entiendes, todos estamos aprendiendo y estamos para ayudarnos.
El profesor es muy dinamico y da buena vibra, pero hay cosas que asume que sabemos y no tenemos esas bases, seria bueno que fuera mas detallado porque es una introduccion en la cual estamos quedamos mal fundamentados.
no quiero ni imaginarme que preguntas habra en el examen!!! jejeje
Como cuesta seguir estas clases...
No me agradaron las últimas explicaciones. Es como si el profesor tuviese un código complicado y se intentara explicar solo a si mismo. Además en cada que tiene la oportinidad solo copia el codigo que ya tiene preparado.
De por sí explicar esto es muyyyy complicado, es más, si lo hiciera los vídeos serian super largos y muy teóricos.
Yo creo que es peor explicar un poco de teoría sobre la marcha pegando código ya preparado, porque si no, no tendría sentido explicar nada solo porque sea largo y teórico.
Se supone que el curso debía ser una introducción a Machine Learning, no aventarnos a copiar y pegar código de algoritmos de Machine Learning solo escuchando superficialmente la teoría.
El contenido pudo ser mas conciso y servir como preparación para otros cursos en donde si se implementen liberias, pero nos lanzamos directamente a PyTorch, Reconocimiento de Imagenes y demás cosas que pudieron ser cursos posteriores.
Tampoco es un tema de que no me gusta buscar materiales para complementar, en la ruta de AI este curso ha hecho contraste con los anteriores cursos, porque avanzas sin tener las herramientas.
Si entendi varias cosas teóricas, pero por lo mismo, como se está abarcando mucho terreno y son demasiados conceptos, lo que terminamos haciendo (al menos yo) es copiar y pegar codigo, modificar parametros para ver como influyen y esperar seguirle el paso.
DotCSV hace videos teoricos en su canal sobre IA en youtube, y para nada los considero largos y/o aburridos, de hecho los usé para poder comprender conceptos que no entendí aquí:
El problema esta en que el explica elementos que supuestamente todos ya manejan, yo creo que lo mejor para aquellos que aun no dominan la matemática que hay detras, devolverse y luego retomar.
Totalmente decuerdo con mr. spam
Comparto el código completo de la actividad desarrollada en esta sesión de clase:
# Mejoras, limitaciones y conclusiones
train_loader = torch.utils.data.DataLoader(data_set, batch_size=64, shuffle=True)model = nn.Sequential( nn.Linear(3072,1024), nn.Tanh(), nn.Linear(1024,512), nn.Tanh(), nn.Linear(512,128), nn.Tanh(), nn.Linear(128,2))learning_rate =0.01optimizer = optim.SGD(model.parameters(), lr=learning_rate)loss_fn = nn.CrossEntropyLoss()n_epochs =100for epoch inrange(n_epochs):for imgs, labels intrain_loader: outputs =model(imgs.view(imgs.shape[0],-1)) loss =loss_fn(outputs, labels) optimizer.zero_grad() loss.backward() optimizer.step()print("Epoch:%d,Loss:%f"%(epoch,float(loss)))val_loader = torch.utils.data.DataLoader(validation_set, batch_size=64, shuffle=False)correct =0total =0with torch.no_grad():for imgs, labels inval_loader: outputs =model(imgs.view(imgs.shape[0],-1)) _, predicted = torch.max(outputs, dim=1) total += labels.shape[0] correct +=int((predicted == labels).sum())print("Accuracy:%f"%(correct / total))train_loader = torch.utils.data.DataLoader(data_set, batch_size=64, shuffle=False)correct =0total =0with torch.no_grad():for imgs, labels intrain_loader: outputs =model(imgs.view(imgs.shape[0],-1)) _, predicted = torch.max(outputs, dim=1) total += labels.shape[0] correct +=int((predicted == labels).sum())print("Accuracy:%f"%(correct / total))sum([p.numel()for p in model.parameters()if p.requires_grad==True])img, label = validation_set[1]out =model(img.view(-1).unsqueeze(0))_, index = torch.max(out, dim=1)print('correct: ',class_names[label],' model:',class_names[index])plt.imshow(img.permute(1,2,0))first_model = nn.Sequential( nn.Linear(3072,512), nn.Tanh(), nn.Linear(512,2), nn.LogSoftmax(dim=1))sum([p.numel()for p in first_model.parameters()])sum([p.numel()for p in nn.Linear(3072,512).parameters()])sum([p.numel()for p in nn.Linear(3072,1024).parameters()])image = request.urlretrieve('https://i.pinimg.com/originals/43/bc/47/43bc47066bb8b2fa4fe7cc8e82cc3714.jpg','test,jpg')img =Image.open(image[0])preprocess = transforms.Compose([ transforms.Resize(48), transforms.CenterCrop(32), transforms.ToTensor(), transforms.Normalize( mean=[0.4915,0.4823,0.4468], std=[0.2470,0.2435,0.2616])])img_t =preprocess(img)out =model(img_t.view(-1).unsqueeze(0))_, index = torch.max(out, dim=1)print('correct: car ',' model:',class_names[index])plt.imshow(img_t.permute(1,2,0))
¿Si es una "introducción"?
Creo que lo que falta es un poco más de explicación sobre las bases antes de tomar este curso de parte de platzi (es decir, si se necesita dominar algebra lineal, calculo etc.. hacer esto antes de ver) . O si solo hay que quedarse con la idea de lo que se trata este tema y en los siguientes cursos se va a explicar mejor.
Por mi parte igual me perdí hace un poco, ya tomé fundamentos matemáticos y estoy empezando algebra lineal, pero voy a seguir así sea medio perdido a ver si en los otros cursos se arregla y capaz realizando ejemplos propios y prácticos se logra entender mejor.
Si correcto así es, si se tiene problemas por desconocimiento de álgebra lineal y algoritmos, lo mejor es hacer ese tipo de cursos.
Es interesante aprender estos temas, pero considero que si es necesario dedicarle mucho tiempo y ensayar para que los ejercicios salgan, este curso me parece mas complicado que el anterior pero vale la pena el esfuerzo.
Este curso tiene mucho nivel, esto quiere decir que falta mucho camino por recorrer
Interesante tema, sería genial que explicaran con mas detalles algunas partes, que dejan algunas incógnitas.
El tema es interesante, pero considero que que esta un poco elevado
Pues a mi me perdieron hace como dos clases
Igual, toca devolverse pero no se a donde si esta es la "introducción"
X2 ya perdi
Me gustaría mas material de apoyo.
Me gusto mucho todo lo que se ha visto hasta el momento, la verdad esta difícil de entender pero con la practica y el tiempo los modelos se van volviendo reiterativos y creo que ahí si aprenderemos un poco mas de la lógica mas que de la misma estructura. Vamos con toda compañeros.