Muy buen video, clara explicación y preciosa preparación de los esquemas (a diferencia de otros videos muy improvisados), que son un ejemplo de la buena didáctica. Tuve tiempo para duplicar tu ejercicio en Excel (fijando filas y columnas basta con escribir la fórmula una sola vez) y verificar los resultados para comprobar que lo entendí. ¡Gracias!
Hola Laura y gracias por tu comentario. Sí, la idea es seguir desarrollando este contenido de gran calidad, que difícilmente se encuentra en Español. Un saludo!
Buenísimo! Unas dudas para salir de dudas. ¿Se puede entender al Kernel como un sistema de coordenadas que lleva lleva los valores a una dimensión?. ¿Asimismo, podría realizar un ejemplo con una imagen extrayendo sus pixeles y sus respectivos números?
Hola Izen y gracias por tu comentario. En realidad al momento de crear el modelo (red convolucional) definimos únicamente el tamaño de los kernels (o filtros), que usualmente es de 3x3, 5x5, 7x7, etc. Sin embargo los coeficientes mismos de los filtros se obtienen tras el proceso de entrenamiento. Un saludo!
@@codificandobits Buenas. Muy interesante el video, muchas gracias. ¿Se supone pues que cada 'pixel' del filtro es una neurona y por tanto el coeficiente es el vector conformado por su peso y bias? Por otra parte, si se trata de varios filtros (uno por color), ¿es cuestión de una neurona con 3 pesos en cada pixel o realmente serían 3 conjuntos de neuronas diferentes? Un saludo!
hola esos filtros kernel tienen nombres, de las personas que los hicieron, si quieres te los envío todos, pero busca nombres de filtros como: sobel , prewitt, roberts, kirrsch, filtro homogéneo, derivativo
Hola, me encantan tus videos, pero tengo una gran duda respecto a lo del kernel, por ejemplo al plantear un modelo como este : model.add(Conv2D(16,(3,3),strides=(1,1),padding="valid",activation="relu", input_shape=(32,32,3))) Yo solo pongo el tamaño de kernel (3,3) pero no los valores de este, entonces ¿es la computadora quien iterando determina los mas eficientes ? y al final ¿ puedo saber cuales son los kernel que ha determinado ?, en tu ejemplo tu kernel es una matriz: [ -1 , 0, 1 -1, 0 , 1 -1, 0 ,1 ] Pero en la vida real hay creo yo infinitas posibilidades que pueden crearse con valores entre -1 y 1. Entonces para crear redes convolucionales yo solo me dedico al poner el tamaño, nunca pongo los valores del kernel porque esos los determina la PC, es así o estoy equivocado? También el minuto 06:00 con los colores rojo,azul y verde y los 3 kernel de 3x3, supongo que esos kernel son diferentes para cada color,cierto? y que lo unico que tiene en comun es que son de 3x3, entonces digamos el valor final de la posición 1,1 de la matriz de 4x4 es la suma de los valores 1,1 de los resultados de los valores obtenidos usando la matriz roja, azul y amarilla? o ¿Estoy equivocado? Saludos y gracias por todo
Hola David. Qué buenas preguntas, las respondo a continuación: 1. Sí, como lo mencionas los coeficientes de los kernels tú no los defines, la red convolucional los aprende automáticamente durante el entrenamiento. 2. Para extraer el contenido de cada kernel puedes hacer esto: for layer in model.layers: filters, biases = layer.get_weights() 3. Sí, para el caso de la imagen RGB (3 canales) tendrás 3 kernels, cada uno de 3x3 y cada uno con diferentes coeficientes. Al realizar la convolución haces: plano R * convolución kernel 1, plano G * convolución kernel 2, plano B * convolución kernel 3 (lo que llamas matriz roja, verde y azul). Y estas tres convoluciones resultantes se suman para obtener el mapa de características final. Un saludo!
Una pregunta, el kernel, dices que tiene orientación vertical, pero en tu ejemplo o un kernel solo tiene esa disposición? Quiero decir, se puede montar así, en horizontal? |-1 |-1 |-1 | | 0 | 0 | 0 | | 1 | 1 | 1 |
Exacto Sergi, como lo menciona David, el Kernel puede tener cualquier orientación y dependiendo de esto tendrás resultados diferentes. Sin embargo ten en cuenta que, como tal, tu no diseñas el contenido del kernel. En una red convolucional este "diseño" se hace automáticamente, la red aprende a definir los coeficientes durante el entrenamiento. Un saludo!
Hola Sebastián. Para la grabación y edición de video utilizo Screenflow (Mac OS X). Para editar el audio uso Audacity. Para las animaciones Powerpoint. Un saludo!
🔥🔥Academia Online: codificandobits.com 🔥🔥
🔥🔥Asesorías y formación personalizada: codificandobits.com/servicios 🔥🔥
Muy bueno, muchas gracias!!!
Master que claro lo explica, muchas gracias por el video excelente como siempre!
Genial manera de explicar, sencillo de entender, gracias :)
6:08 , Gracias.!
😉 un saludo!
Gracias por Compartir. Fantástica Explicación. Nos ponemos Manos a la Obra. jejejeje....
bien explicado, estoy ansioso por saber cómo se hacen esas redes
Esta explicación está demasiado buena. Usted es un excelente profesor. Muchas gracias por este contenido.
:) :) :) esos comentarios son inspiradores Luis. Muchas gracias. Un saludo!
Muchas gracias, muy bien explicado
excelente tus explicaciones , son muy claras y entretenidas.
Gracias por tu comentario! Un saludo!
Exelente explicación, muchas gracias
¡Excelente explicación👏👏👏!!! pero ¿Cómo quedaría la operación matemática para el RGB?
GRACIAS
Explicas mejor que mi profe de universidad. TQM
ja, ja, Gracias por tu comentario, y un saludo!
Muy clarito, gracias.
Gracias a ti por seguir el canal. Saludos!
gracias por compartir tu conocimiento x2 :D
Excelente explicación
Gracias por tu comentario. Un saludo!
Muy buen video, clara explicación y preciosa preparación de los esquemas (a diferencia de otros videos muy improvisados), que son un ejemplo de la buena didáctica. Tuve tiempo para duplicar tu ejercicio en Excel (fijando filas y columnas basta con escribir la fórmula una sola vez) y verificar los resultados para comprobar que lo entendí. ¡Gracias!
Hola Laura y gracias por tu comentario. Sí, la idea es seguir desarrollando este contenido de gran calidad, que difícilmente se encuentra en Español. Un saludo!
Buenísimo! Unas dudas para salir de dudas. ¿Se puede entender al Kernel como un sistema de coordenadas que lleva lleva los valores a una dimensión?.
¿Asimismo, podría realizar un ejemplo con una imagen extrayendo sus pixeles y sus respectivos números?
me encanto este video gracias pude aprender mucho pero d donde se sacan esos filtros kernel --por favor sigue asi ...voy a ver todos tus videos
Hola Izen y gracias por tu comentario.
En realidad al momento de crear el modelo (red convolucional) definimos únicamente el tamaño de los kernels (o filtros), que usualmente es de 3x3, 5x5, 7x7, etc. Sin embargo los coeficientes mismos de los filtros se obtienen tras el proceso de entrenamiento.
Un saludo!
@@codificandobits Buenas. Muy interesante el video, muchas gracias. ¿Se supone pues que cada 'pixel' del filtro es una neurona y por tanto el coeficiente es el vector conformado por su peso y bias? Por otra parte, si se trata de varios filtros (uno por color), ¿es cuestión de una neurona con 3 pesos en cada pixel o realmente serían 3 conjuntos de neuronas diferentes? Un saludo!
hola esos filtros kernel tienen nombres, de las personas que los hicieron, si quieres te los envío todos, pero busca nombres de filtros como: sobel , prewitt, roberts, kirrsch, filtro homogéneo, derivativo
Muy buen video entendi gracias
Hola Nicozk, gracias por tu comentario! Un saludo!
Hola, me encantan tus videos, pero tengo una gran duda respecto a lo del kernel, por ejemplo al plantear un modelo como este :
model.add(Conv2D(16,(3,3),strides=(1,1),padding="valid",activation="relu", input_shape=(32,32,3)))
Yo solo pongo el tamaño de kernel (3,3) pero no los valores de este, entonces ¿es la computadora quien iterando determina los mas eficientes ? y al final ¿ puedo saber cuales son los kernel que ha determinado ?, en tu ejemplo tu kernel es una matriz: [ -1 , 0, 1
-1, 0 , 1
-1, 0 ,1 ]
Pero en la vida real hay creo yo infinitas posibilidades que pueden crearse con valores entre -1 y 1. Entonces para crear redes convolucionales yo solo me dedico al poner el tamaño, nunca pongo los valores del kernel porque esos los determina la PC, es así o estoy equivocado?
También el minuto 06:00 con los colores rojo,azul y verde y los 3 kernel de 3x3, supongo que esos kernel son diferentes para cada color,cierto? y que lo unico que tiene en comun es que son de 3x3, entonces digamos el valor final de la posición 1,1 de la matriz de 4x4 es la suma de los valores 1,1 de los resultados de los valores obtenidos usando la matriz roja, azul y amarilla? o ¿Estoy equivocado?
Saludos y gracias por todo
Hola David. Qué buenas preguntas, las respondo a continuación:
1. Sí, como lo mencionas los coeficientes de los kernels tú no los defines, la red convolucional los aprende automáticamente durante el entrenamiento.
2. Para extraer el contenido de cada kernel puedes hacer esto:
for layer in model.layers:
filters, biases = layer.get_weights()
3. Sí, para el caso de la imagen RGB (3 canales) tendrás 3 kernels, cada uno de 3x3 y cada uno con diferentes coeficientes. Al realizar la convolución haces: plano R * convolución kernel 1, plano G * convolución kernel 2, plano B * convolución kernel 3 (lo que llamas matriz roja, verde y azul). Y estas tres convoluciones resultantes se suman para obtener el mapa de características final.
Un saludo!
Una pregunta, el kernel, dices que tiene orientación vertical, pero en tu ejemplo o un kernel solo tiene esa disposición?
Quiero decir, se puede montar así, en horizontal?
|-1 |-1 |-1 |
| 0 | 0 | 0 |
| 1 | 1 | 1 |
Puedes montarlo como quieras man, solo ten en cuenta que el resultado es diferente.
Exacto Sergi, como lo menciona David, el Kernel puede tener cualquier orientación y dependiendo de esto tendrás resultados diferentes. Sin embargo ten en cuenta que, como tal, tu no diseñas el contenido del kernel. En una red convolucional este "diseño" se hace automáticamente, la red aprende a definir los coeficientes durante el entrenamiento. Un saludo!
Hola! Con qué programa haces tus vídeos??
Hola Sebastián. Para la grabación y edición de video utilizo Screenflow (Mac OS X). Para editar el audio uso Audacity. Para las animaciones Powerpoint.
Un saludo!
podrias explicarlo poniendo cual seria la imagen que estariamos viendo de esa matriz "imagen"? gracias
Muy buena explicación..