‫Qué emocionante es este conjunto, tenemos un largo camino desde la lucha para convertir nuestras imágenes y posturas, nuestras etiquetas en
‫tiempos verbales, preparando nuestro día eligiendo un modelo en el centro de flujo tensorial, creando devoluciones de llamada de modelos.
‫Finalmente estamos en la etapa en la que estamos listos para entrenar nuestro primer modelo de aprendizaje profundo, así que
‫creemos un entrenamiento de encabezado, un modelo.
‫Ahora vamos a poner un subconjunto de datos, porque si recuerdas cuando
‫dividimos nuestros datos, solo comenzaremos a entrenar en 1000 imágenes porque ¿por qué queremos hacer eso?
‫Así que vamos aquí, nuestro primer modelo solo se entrenará en mil imágenes para asegurarnos de que todo esté
‫funcionando.
‫Entonces eso es lo que estamos tratando de hacer.
‫Estamos tratando de minimizar nuestro tiempo entre experimentos.
‫Entonces, comenzamos comenzando con un subconjunto de los datos para asegurarnos de que todo este código, quiero decir, podría romperse.
‫Derecha.
‫Así que queremos asegurarnos de que está funcionando antes de dedicar mucho tiempo a entrenar con 10000 imágenes, porque el
‫entrenamiento con mil imágenes va a ir mucho más rápido que con 10000 imágenes.
‫Y podría imaginarse lo mismo si lo aumenta a 100000 imágenes o en el caso de la imagen neta
‫catorce punto dos millones.
‫Entonces, hay una variable más que tenemos que definir antes de que podamos entrenar un modelo, y ese es el
‫número de épocas.
‫Entonces, el número de épocas es cuántos pases de datos nos gustaría que hiciera nuestro modelo.
‫Y un pase es, como se puede imaginar, equivalente a nuestro modelo, tratando de encontrar patrones en cada imagen de perro
‫y ver qué patrones se relacionan con cada etiqueta.
‫Pasemos a las épocas de aquí ahora.
‫Es igual a cien y vamos a hacer algo genial aquí, vamos a crear
‫un pequeño control deslizante como lo hicimos antes de Harran.
‫Y luego crearemos un control deslizante de tipo y luego los hombres serán 10, las Mac pueden ser 100 y luego el paso puede
‫ser 10.
‫Mira eso.
‫¿Cuan genial es eso?
‫Entonces, si quisiéramos hacer 10 épocas, podríamos hacer 10.
‫Pero vamos a limitarnos a 100 porque tenemos nuestra devolución de llamada de detención temprana y veremos todo
‫esto en acción en un segundo.
‫Pero esencialmente, lo que va a hacer un pase de entrenamiento si volvemos a nuestro Keano, una
‫época sería darle a nuestro modelo una oportunidad única de ver todos los datos de entrenamiento y luego validarlos desde su.
‫100 épocas, por lo que le damos a nuestro modelo hasta 100 oportunidades para revisar el conjunto de datos de entrenamiento y
‫descubrir los patrones.
‫Entonces va a lo que pasa, va a pasar por estas capas.
‫Vamos a pasar nuestras imágenes de entrenamiento a nuestro modelo.
‫Pasará por estas capas.
‫Y luego nuestro modelo, a medida que aprende patrones, adivinará qué etiqueta pertenece a qué
‫imagen.
‫Y cuanto peor sea la suposición, mayor será la pérdida.
‫Así que ahí es donde entra Adam.
‫Recuerde que ese tipo al pie de la colina en el Campeonato Internacional de Dissent Hill le
‫está diciendo a nuestro modelo cómo puede mejorar sus conjeturas con cada época.
‫Y luego veremos cómo le está yendo a nuestro modelo en un nivel de precisión, porque tenemos a ese juez espectador en
‫la parte inferior de la colina observando qué tan bien se está desempeñando nuestro modelo.
‫Entonces, nuevamente, si todo esto no tiene sentido, tendrá más sentido una vez que comencemos a ejecutar
‫un modelo.
‫Así que hagamos una última comprobación.
‫La verificación final es una última vez para asegurarnos de que estamos usando una GPU, porque si no estamos usando una GPU,
‫este entrenamiento de nuestro modelo en imágenes llevará mucho, mucho tiempo.
‫Como vio desde el principio, una GPU puede acelerar nuestro código hasta 30 veces y, a veces, más.
‫Escribamos ese código.
‫Verifique para asegurarse de que todavía estamos funcionando en una GPU tan constante.
‫GPU.
‫Disponible, y luego nos vamos.
‫Si.
‫Si t. F. config, no menos dispositivos físicos.
‫Y luego queremos comprobar G. pag. UNA. de lo contrario, no está disponible, por lo que este es el mismo código que escribimos anteriormente.
‫Pero necesitamos una GPU para poder ejecutar esto en una cantidad de tiempo considerable.
‫Sí, también podríamos haberlo comprobado aquí.
‫Recuerde, es un pequeño truco de atajo, pero me encanta decir esta impresión aquí ahora.
‫Boom, tenemos un G. pag. UNA. en ejecución, tenemos varias épocas configuradas,
‫creemos una función simple que entrena un modelo.
‫Así que vamos a corregir eso aquí.
‫Creemos una función que entrena un modelo y la función va a crear un modelo usando crear modelo.
‫Y luego queremos configurar una décima devolución de llamada de la placa.
‫Usando nuestra función de ahora en adelante, crea.
‫Mira, aquí es donde la creación de funciones realmente ha entrado en juego para nosotros.
‫De lo contrario, tendríamos que escribir código ad hoc.
‫Pero escribir funciones para empezar lleva un poco más de tiempo, pero a la larga nos ahorra tiempo.
‫Entonces llame a la función en nuestro modelo, analizando los datos de entrenamiento, datos de validación.
‫Varias épocas para entrenar.
‫Que ahora es una caja.
‫Justificamos que con nuestro pequeño control deslizante enfermo y los kovács, que son nuestras funciones auxiliares que
‫nos gustaría usar, y finalmente queremos que devuelva el modelo, vamos a cambiar esto a rebajas.
‫Eso se ve fenomenal.
‫OK, vayamos aquí.
‫Había una función para entrenar y devolver un modelo entrenado.
‫Entonces aquí estamos bien entrenados.
‫No puedo creer que finalmente estemos a la altura.
‫Esto es increíble.
‫Estamos entrenando nuestra primera red de conocimiento y aprendizaje profundo.
‫Entonces los trenes reciben el modelo y devuelven la versión entrenada.
‫Agradable y sencillo.
‫Recuerde, aunque nos emocionemos no significa que estemos perdiendo nuestros hábitos comunicativos, así que
‫crearemos un modelo.
‫Así que vamos a igualar el modelo, digamos, aquí es donde entra nuestra función de creación de modelo.
‫Oh sí.
‫Eso es tan satisfactorio de escribir.
‫Y luego creamos una nueva sesión de tablero cada vez que entrenamos a un modelo.
‫Porque recuerde, con nuestra placa Tensas, con nuestra devolución de llamada de la placa Tensas, en realidad solo llamamos Estancia
‫Board.
‫No necesitamos esa devolución de llamada que configuramos nuestra función.
‫Entonces, si regresamos aquí cada vez que se llama, se creará una nueva carpeta en los registros con la fecha
‫y hora actual.
‫Entonces esto es importante porque cada vez que ejecutamos nuestras funciones de modelo de tren, por lo que
‫cada vez que intentamos entrenar un nuevo modelo, un nuevo experimento, estamos creando una carpeta de registro, que luego podemos rastrear el rendimiento de
‫nuestro modelo.
‫Eso es algo realmente útil más adelante, cuando intentemos evaluar qué experimento funcionó mejor que
‫otro.
‫Y luego ajustamos el modelo a los datos que pasan en las devoluciones de llamada que creamos.
‫Ahora, nuevamente, probablemente haya una mejor manera de hacer esta función, pero solo estamos tratando
‫de que funcione.
‫Y luego podemos volver después de haber pasado por la fase de ajustar un modelo por primera
‫vez y refinarlo.
‫Vayamos modelo a medida y lo vamos a pasar.
‫X es igual a los datos del tren, que es un lote de datos, si lo recuerda, que contiene las imágenes y las etiquetas.
‫Entonces las épocas van a ser épocas de Naameh, a. k. una. ¿Cuántas veces se le permite a nuestro modelo mirar los
‫datos de entrenamiento antes de que se detenga?
‫¿O cuántas posibilidades tenía nuestro modelo de pasar todo el conjunto de datos de entrenamiento para encontrar patrones y luego
‫los datos de validación?
‫Va a ser datos válidos, que también es un grupo de datos, o un lote de datos, lo siento, y la frecuencia de
‫validación es la frecuencia con la que queremos probar los patrones que nuestro modelo ha encontrado en nuestro conjunto de validación.
‫Y lo configuramos en uno porque queremos que pruebe sus patrones que se encuentran en el conjunto de entrenamiento
‫en los datos de validación cada época.
‫Entonces, una vez por época y luego nuestras devoluciones de llamada son a bordo de Bordewich, acabamos de
‫crear arriba con nuestra función y detener anticipadamente whoof.
‫Y luego queremos volver modelo poner un poco.
‫Devuelve el modelo ajustado.
‫Qué genial es eso y ahora podemos ajustar nuestro modelo a los datos.
‫Por qué tan simple como ir.
‫Modelo, ECLSS, modelo de tren.
‫Verá los beneficios de crear funciones para que podamos ejecutar esta función después de hacer varios experimentos
‫diferentes más adelante.
‫Entonces, ¿estás listo ahora?
‫Un pequeño detalle aquí.
‫Cuando se entrena un modelo por primera vez, especialmente con datos de imágenes o cualquier otro tipo
‫de datos a gran escala, la primera época suele ser la más larga en comparación con el resto.
‫Ahora, esto se debe a que las funciones que hemos escrito obtienen los datos y se han inicializado.
‫Entonces a. k. una. cargando los datos en la memoria de nuestra GPU.
‫Ahora, usar más datos generalmente llevará más tiempo, razón por la cual comenzamos con mil imágenes y, por lo
‫tanto, después de la primera época.
‫Correcto, lo hemos configurado para que tenga un límite de 100, el primero puede demorar un par de minutos después
‫del primer airpark, el APOC posterior solo debería tomar un par de segundos.
‫Entonces estás listo.
‫Vamos a hacer esto juntos.
‫Los dedos cruzaron todas nuestras funciones, porque esto en realidad depende de unas pocas líneas de código
‫aquí.
‫Digamos, si funciona tres a uno.
‫Mira ese edificio, un modelo con red móvil V2.
‫Crucé los dedos.
‫Espero que ustedes también.
‫Oh, sí, está comenzando.
‫Mira, ahí vamos, época uno de 100.
‫Porque la caja está configurada en 100.
‫Entonces va a entrenar para 25 pasos, lo que significa nuestro tamaño de lote, así que si vamos, tenemos 800 imágenes en nuestro conjunto de
‫entrenamiento porque recuerden, comenzamos con mil.
‫Entonces, si dividimos eso entre 32, obtenemos veinticinco.
‫Por eso, el entrenamiento consta de veinticinco pasos, porque hay un tamaño de lote de treinta y dos y validación.
‫Si salimos doscientos divididos por treinta y dos, se redondeará.
‫Así que se redondea a siete.
‫Por eso tenemos validación.
‫Entonces 200 imágenes sobre una licenciatura son 30 a.
‫Y mira esto.
‫Aquí vamos.
‫Aproximadamente cinco minutos, y esto es de lo que estoy hablando con la pérdida, así que ahora todas estas
‫cosas que creamos aquí arriba, entonces la pérdida.
‫Entonces, nuestro objetivo es recordar minimizar la pérdida.
‫Porque estamos en la cima de la colina, tenemos miedo a las alturas, queremos llegar al pie de
‫la colina, ¿quieres minimizar la función de pérdida?
‫La pérdida es la altura del cerro.
‫Venimos aquí.
‫Esperemos que este número baje, pero queremos maximizar la precisión.
‫Así es como sabremos si nuestro modelo se está entrenando o no, si se trata de patrones de
‫aprendizaje, esta pérdida debería disminuir, esta precisión debería aumentar.
‫Así que esto va a tomar unos minutos para atravesar la primera época.
‫Voy a esperar hasta que haya pasado por la primera época y luego aceleraré este video y luego te veré una
‫vez que haya pasado la primera época porque verás épocas posteriores después de esta.
‫Entonces, la Época dos de cada 100 será bastante rápida porque estamos usando una GPU.
‫La única razón por la que la primera toma un tiempo es porque tiene que cargar todas esas imágenes en la memoria de la
‫GPU.
‫Te veré bastante instantáneamente, pero para mí, serán unos tres minutos.
‫Está bien, estoy de vuelta.
‫Así que aquí tenemos una ETA, que significa tiempo estimado de llegada, quedan unos 12 segundos en esta
‫primera época siempre que todo salga según lo planeado.
‫Y entonces puede ver que la pérdida se ha reducido ligeramente y la precisión ha aumentado.
‫Entonces esto es algo bueno.
‫Ahora, lo que deberíamos ver al final de esta primera época, si nos instalamos correctamente, deberíamos decir que esto se pierde en
‫el conjunto de entrenamiento y la precisión en el conjunto de entrenamiento.
‫Deberíamos ver la pérdida en los datos de validación y la precisión en el conjunto de validación aparecer en cualquier segundo ahora.
‫Así que solo estamos esperando.
‫Entonces, probablemente lo que está haciendo ahora es que ha pasado un poco más de 12 segundos, pero
‫está cargando los datos de validación en la memoria para poder calcular y evaluar cómo se está desempeñando en ese conjunto de datos.
‫No puedo creer que estemos haciendo esto, somos como lucir un modelo juntos en tiempo real.
‫Esto es fenomenal.
‫Nunca había hecho esto antes.
‫Eso es siempre que su código esté funcionando.
‫Aquí vamos.
‫Mira eso.
‫Así que ahora tenemos esto, no estamos hablando, tenemos esta métrica en los datos de entrenamiento y esta métrica
‫en la validación.
‫Así que vea qué tan rápido está mejorando nuestra precisión.
‫Ahora, les dije que las épocas se acelerarán.
‫Mira eso.
‫El primero tomó alrededor de cinco minutos, pero estos están tomando cinco segundos.
‫Ya estamos en un punto cero de precisión.
‫Eso es 100 por ciento de precisión en los datos de entrenamiento.
‫Eso es una locura.
‫Entonces, lo que esto nos dice en realidad es que es bueno que nuestro modelo se sobreajuste porque está funcionando
‫mucho mejor en los datos de entrenamiento que en los datos de validación.
‫Pero esto es genial, nuestro modelo está funcionando, está encontrando patrones, está usando lo que la red móvil V2
‫ha aprendido e imagina la red y lo está aplicando a nuestros perros.
‫El conjunto de datos de la visión del perro está cobrando vida de una manera increíble.
‫Ahora, espero que el tuyo también funcione así porque estamos entrenando un modelo juntos en tiempo real.
‫Esto es hermoso.
‫Entonces, lo que deberíamos ver es que una vez que la precisión de la validación deje de mejorar durante varias
‫épocas, entonces, tres, debido a nuestra devolución de llamada de detención temprana, dejará de entrenarse.
‫Entonces, en realidad, no creo que lleguemos a las 100 épocas, tal vez ni siquiera cerca, porque aquí
‫estamos obteniendo una precisión de un punto cero con una pequeña pérdida en nuestros datos de entrenamiento.
‫Así que, aquí vamos.
‫Se detuvo.
‫Mi corazón se acelera.
‫Eso fue fenomenal, así que digo lo que quise decir, la primera época lleva un tiempo porque está cargando
‫datos en la memoria una vez que se cargan, esos datos iniciales en la memoria, la GPU simplemente se
‫va a ir, está bien, es hora de pisar el gas y encenderá los posquemadores o el gas.
‫Sin frenos, cariño.
‫Así que llegamos a 18 de cada 100 épocas.
‫Y podemos ver que nuestro modelo en nuestro conjunto de datos de entrenamiento está funcionando con una precisión del 100 por ciento.
‫Eso es bastante loco.
‫1. 0.
‫Tienes que multiplicar este número por 100.
‫La pérdida es bastante baja.
‫Quiero decir, una pérdida de cero es perfecta.
‫Pero podemos decir que nuestro modelo está sobreajustado porque está funcionando mucho mejor en los datos de entrenamiento
‫que en los datos de validación.
‫Entonces, si regresamos, es como si nuestro modelo hubiera memorizado los materiales del curso en lugar de los principios de resolución de
‫problemas de esos materiales del curso.
‫Y está luchando por adaptarse a un conjunto de datos que no ha visto antes, también conocido como un examen de práctica o nuestro conjunto de
‫validación.
‫Entonces, en este momento, nuestro modelo tiene poca capacidad para generalizar.
‫Creo que eso es suficiente para un video.
‫Eso es mucha emoción.
‫Lo que quiero que hagas es un poco de tarea antes de que vayamos y revisemos los registros de la placa en el siguiente video,
‫porque ya hemos usado nuestra devolución de llamada de la placa Tenzer antes.
‫Quiero que vean que esta es una pregunta, es realmente importante después de haber intentado modelar.
‫Quiero que te preguntes.
‫Parece que nuestro modelo se sobrealimenta porque está funcionando.
‫Mucho mejor en el conjunto de datos de entrenamiento que en el conjunto de datos de validación.
‫¿Cuáles son algunas formas de prevenir el sobreajuste del modelo en el aprendizaje profundo, las redes neuronales?
‫Así que lo convertiremos en un derribo.
‫Esa es una pregunta que quiero que mires antes de pasar al siguiente video, ¿cuáles son algunas formas de evitar el sobreajuste de
‫un modelo y las redes profundas conocidas?
‫Así que compruébalo incluso si no estás seguro de ellos.
‫Solo quiero que comience a sentir curiosidad por lo que está sucediendo, y quiero que deje de captar
‫las pistas sobre cuándo su modelo está sobreajustado, como un rendimiento mucho mejor en el conjunto de datos de entrenamiento que
‫en el conjunto de datos de validación.
‫Y una pequeña nota aquí, el sobreajuste de notas para empezar es algo bueno.
‫Significa que nuestro modelo está aprendiendo.
‫Así que estoy tremendamente emocionado de que acabamos de entrenar nuestra primera red neuronal de aprendizaje profundo juntos
‫usando el aprendizaje por transferencia. La visión del perro está cobrando vida.
‫Así que terminamos de entrenar un modelo, al menos un primer subconjunto de un modelo.
‫Esto no está en los datos completos.
‫Esto es solo en mil imágenes.
‫Entonces, nuestro siguiente paso es si llegamos a nuestra nota clave, ¿qué estamos haciendo?
‫Entonces ajustamos el modelo a los datos.
‫Aún no hemos hecho una predicción.
‫Entonces, lo que podríamos hacer es evaluar el modelo usando nuestras devoluciones de llamada del tablero tensor para que pueda ver eso.
‫Y luego descubriremos cómo hacer una predicción con nuestro modelo entrenado.
‫Suena como un plan.
‫Así que mira esta pregunta y te veré en el siguiente video.