logo

Dot CSV

Inteligencia Artificial, Tecnología, Ciencia y Futuro! Bienvenidos a la 4ª Revolución Industrial 🚀 Inteligencia Artificial, Tecnología, Ciencia y Futuro! Bienvenidos a la 4ª Revolución Industrial 🚀

Transcribed podcasts: 213
Time transcribed: 5d 22h 50m 3s

This graph shows how many times the word ______ has been mentioned throughout the history of the program.

Ojo, ¿eh? Ojo, estamos viendo como una inteligencia artificial acaba de generar y acaba de entrenar
a otra inteligencia artificial.
Bueno, vamos a empezar hablando un poco de todo esto. Recordaréis que hace una semana
publicó un vídeo en mi canal hablando de GitHub Copilot. GitHub Copilot podríamos
discutir que es quizás una de las cosas más interesantes que han salido en el último
mes e incluso durante este año. ¿Qué GitHub Copilot? Pues un proyecto presentado por GitHub,
recordemos compañía que pertenece a Microsoft, recordemos compañía que invierte en una
empresa como OpenAI. Y es un proyecto que básicamente han entrenado pues a un sistema
tipo GPT-3 para nutrirse de todo el código público que hay en GitHub y que sirva como
compañero de programación pues de cualquier informático que quiera programar pues en
Python, en HTML, en CSS, en JavaScript. Es que Carlos, es que HTML no es un lenguaje
de programación. Silencio, estoy hablando. Cualquier lenguaje de programación que pueda
estar en GitHub con mayor o menor representación pues podrá estar modelado por la inteligencia
artificial que está detrás de GitHub Copilot que es Codex. Recordemos que se llama Codex.
A partir de ahí sale la demo técnica, sacan unos cuantos ejemplos en su página web y
permiten el acceso a esta herramienta a unos pocos usuarios. Yo por suerte he recibido
acceso bastante rápido. Esto ha sido a través de una persona que por Twitter me dijo oye
te puedo conseguir acceso y efectivamente me dio acceso y desde aquí se lo agradezco
porque eso me permite hacer lo que vamos a hacer hoy, poder enseñaros esta herramienta
en directo. La idea es que la pongamos a prueba, veamos si funciona tan bien, si funciona
tan mal, si es tan guay como dicen. Yo he podido estar toqueteando un poco y la verdad
que tiene cosas que me interesan, otras que quiero comentar y yo creo que va a ser un
directo bastante interesante y del cual voy a necesitar vuestra ayuda. Dicho eso, ahora
sí pasemos a GitHub Copilot. Bueno, vamos a hacer una primera prueba. Lo habéis dicho,
si lo primero que programamos no es un hello world, pues vaya rollo de herramienta. Vamos
a hacer aquí un comentario que diga Implement a hello world for my Twitch audience. No sé
qué va a salir de aquí, vamos a probar. Vamos a hacer un dev. Hello print hello world.
Canónico, limpio y para toda la familia. Vamos a ejecutarlo. Ahí está y si lo damos
para acá, pues ahí está hello world. ¿Cómo lo veis? ¿Nos ha facilitado la vida ya? Vamos
a probar otro intento porque el otro día hice a hello world for a given user. Vamos
a ver si esto lo entiende de alguna manera. Ahí está. Por ejemplo, un hello world para
un usuario dado. En este caso implementa la función hello pero fijaros que ahora cambia
que como input recibe el atributo name y entonces en este caso entiende que queremos concatenar
hello más name. Vamos a llamar. Directamente lo siguiente que querría hacer yo es llamar
a esta función que ya me está diciendo call the function hello with a string as an argument.
Es básicamente la explicación que acabo de decir. Vamos a probar hello Alice. No podía
haber cogido el nombre más típico. Yo voy a coger aquí dot CSV. Vamos a ejecutar y
debería estar bien. Vale hello dot CSV. Fijaros cómo funciona la herramienta. Yo aquí abajo,
no sé si podéis ver, justamente queda tapado por el chat. Os lo muestro así rápido. Aquí
veis que está este icono. Este es el icono de copilot y yo puedo decidir si lo quiero
activado o desactivado. En el momento en el que está activado pues me va apareciendo
el autocompletado que estaba ahí viendo hasta ahora. Me resalta las líneas como en gris
y yo puedo decidir si quiero agregar esa línea o esa pieza de código a mi código. Igualmente
hay una cosa que mola bastante y es lo siguiente y es que yo en cualquier punto me haga recomendaciones
o no me haga recomendaciones le puedo dar a control enter. Puedo hacer así y se me abre
a la derecha esta pestaña de copilot, donde se me van a sintetizar 10 de las soluciones
más probables para esto que yo estoy pidiendo, con lo cual no solamente es un programador
que te asiste durante tu programación autocompletado de lo que tienes, sino que también te genera
una distribución de soluciones que tú puedes elegir aquella que te parezca que es la más
correcta para tu problema. Esto está súper bien. Yo lo uso bastante la verdad y ya veréis
que hoy nos va a hacer bastante falta en muchos casos. Entonces vamos a hacer pruebilla porque
yo yo con esto lo primero que me puse a hacer fue vale cuánto hay de overfitting o cuánto
hay de funciones típicas tan comunes que realmente no sé yo si la IA está directamente copiando
un ejemplo canónico de GitHub que a lo mejor todos hemos implementado alguna vez y está
subido o hasta qué punto la puedo forzar para ver si dinámicamente se va adaptando
lo que le pido. Vamos a probar por ejemplo a hello world function that print my name
in reverse. Yo que sé. Vale. Vale fijaros una función de hello world que imprima mi
nombre al revés. En este caso se llama la función ha decidido llamarla reverse name
y hace un print hello world my name is y en este caso pues está invirtiendo está usando
este truquito para invertir el string directamente en Python. Vale si esto lo probaramos por
ejemplo print no voy a poner nada más ya empieza a utilizar la función reverse name.
Vale fijaros se ha olvidado el atributo que nos ha puesto name pero no lo ha pasado como
atributo se lo voy a corregir que esto estaría mal y ahora entonces si me vengo para acá
pues si hago el reverse name. Ahora si nos pone un nombre como sería Derek. Yo voy a
poner Carlos y vamos a ver si me imprime solrack hello world my name is solrack. Vale en este
caso la función además tampoco hace un return sino que nos hace un print esto sería más
correcto hacer así y devolver esto. Vale ahí está vale funciona dedito arriba dedito
abajo como lo veis. En este caso lo que se plantea es que si yo por ejemplo pongo en
este fichero aunque sea el punto Python begin opens SSH private key. En este caso esta sería
la cabecera de una clave privada para hacer la conexión de SSH y lo que quiere ver este
ejemplo es que si yo hago así copilot podría empezar a autocompletar esta clave privada.
Ahí está. Vale fijaros todo esto son posibles soluciones que copilot se inventa sobre la
clave privada sobre posibles claves privadas. Esto es una captura que se está compartiendo
mucho por Twitter que lo que hace ver es que es posible que copilot esté filtrando información
al exterior información privada. Pero mi respuesta es esta realmente si copilot se
ha entrenado solamente que es lo que han dicho la gente de github y lo tenemos que creer
porque efectivamente pues será así. Si se ha entrenado con datos públicos significa
que estas claves privadas ya están públicas y si copilot está memorizándolas pues significa
que ya estaban en el dataset de entrenamiento con lo cual tampoco es una fuga de datos de
un repositorio por ejemplo privado que sería algo más más grave. Pero es que además lo
que posiblemente esté pasando aquí sea que copilot esté alucinando estos datos. Todo
esto lo que quiere representar es que evidentemente el sistema tiene memorizado mucho formato
de lo que podrían ser datos personales sabe lo que es un email evidentemente y te podría
alucinar direcciones de email que fueran consistentes con el nombre y el usuario que le estamos
dando aquí. Pero eso no significa que sean datos reales y si lo fueran porque el sistema
está haciendo overfitting y ha memorizado pues toda esta información significaría
que esos datos son públicos. Bueno vamos a probar cosas. Vale vamos a intentar jugar
un poquito más allá con esto. Vamos a ver si podemos hacer algún método más complejo.
Vamos a probar a implementar un sudoku solver. Vale. This method is solve any sudoku given
as an input. Vamos a ponerla aquí. A sudoku. Mira justo justo lo que estaba pensando cómo
vamos a implementar un sudoku pues en este caso una matriz que puede aceptar entero de
1 a 9. Me parece perfecto. Dev. Yo no toco nada. Ahí está. Vale. Bueno atentos. Me
gusta un poco. Dev solve sudoku. Este método resuelve un sudoku. Toma un sudoku como entrada
y lo tal. Si. Check sudoku. Sudoku return false. Si no. Solve sudoku. Bueno. Vale. Acepto
el duelo. Vamos a coger ahora. Dev check sudoku. Vamos a primero probar el check sudoku.
Fijaros un detalle. Veis que se ha generado este token de text y esto aquí también.
Es un error. Vale veréis que lo voy a estar borrando mucho porque a veces cada vez que
me genera cosas me genera como esta especie de tokens que no deberían de estar. Ya he
comprobado por la por el foro que han habilitado en github para todas estas cosas que es un
error que ya solucionarán. Vamos a ver si resuelve este método. Check sudoku. Vale.
Check sudoku. Voy a intentar por lo general aceptar soluciones de las primeras que aparezcan
aquí. La vamos revisando aquí para que podáis ver el código completo. En este caso el método
check sudoku comprueba si el sudoku es válido. ¿Qué significa que sea válido? Pues por
ejemplo comprueba si la longitud del sudoku es diferente a 9. Devuelve falso. No es correcto.
Si cada fila de ese sudoku la longitud es 9 devuelve falso. Con esto ya estamos comprobando
que es una matriz de 9 por 9 y efectivamente el comentario nos dice eso. Comprueba si la
matriz es una matriz de entero. Para cada fila en sudoku, para cada elemento en cada fila
si no es una instancia de entero devuelve falso. Esto también parece que está bien.
Forrowing sudoku. Vale. ¿Aquí qué está haciendo? Oh super interesante claro. Cada
fila de un sudoku tendría que tener 9 números que no se repitan. Tendría que ser del 1
al 9 en cualquier orden pero debería ser del 1 al 9. Con lo cual lo que hace es convertir
esa fila que es una lista en un set y un set como no puede tener elementos repetidos si
hubiera alguno que no fuera del 1 al 9 pues la longitud sería diferente y devolvería
falso. Esto está bien. Esto está muy bien. Claro yo ya de parte ya no sé si todo esto
lo hubiera hecho así tan rápido o no. Comprueba si cada submatrix tiene el mismo número de
enteros. ¿Qué se refiere a esto? Recordad que en un sudoku de 9 por 9 cada región de
3 por 3 entiendo que es lo que se comprueba aquí. Cada región de 3 por 3 en realidad
también tiene que contener los números del 1 al 9. Entonces está haciendo toda esta
comprobación que es que no la vamos ni a revisar. Yo me lo voy a creer y ya está.
Vamos a ver si podemos incluso generar algún sudoku de prueba. Bueno aquí ya nos está
proponiendo ya se envalentona un poco y nos dice oye venga va te preparo el devsolve sudoku
ya o que quieres. En este caso lo que voy a hacer es comprobar si el método funciona
entonces voy a hacer check sudoku y en este caso como me da un poco de presa generar un
sudoku me gustaría que él me generara el sudoku. Vale mira por ejemplo solve en este
caso vamos a aceptar este. Aquí nos está poniendo varios tipos de sudoku. Fijaros
que es fácil de generarte una prueba. En este caso si yo hubiera implementado este
método aquí arriba directamente haciendo solve pues no tendría que generarte tu ejemplo
de prueba sino que directamente se puede dejar a copilot que lo improvise. Vale eso
está bastante guay. Entonces voy a quitar esto voy a dejar este. Este de aquí pues
sabemos que es un sudoku que es de partida erróneo. ¿Por qué? Porque tiene cero ya
con eso pues lo lo sé. Vamos a ver falso. Evidentemente ha detectado que esto es falso.
Cómo le podríamos poner en un comentario para que compruebe que el sudoku es verdadero
para ver si me genera un sudoku que sea correcto. No eso no es un sudoku válido amigo. Voy
a ponerle a correct. 8 7 6 9. Este sí estaría bien. Este tiene todos los correctos. Vamos
a ver si a partir de aquí sigue completándolo correctamente. Le he dado control enter. Estoy
viendo que por ejemplo este tiene pinta de que sí. Por ejemplo mira si me lo traigo
para acá podemos ver que esta fila sí es correcta. Esta columna al menos sí es correcta
y esta submatrix sí es correcta. Vale diría que el sudoku en general es correcto. Vamos
a darle a print sudoku. Vamos a darle a control f5 y me dice que es falso porque es falso.
Vamos a ver al 4 a maldita sea maldita sea. Efectivamente sí sí sí sí no es correcta.
Entonces bueno parece que lo del sudoku nos está llevando al camino que deseamos. Parecía
que sí no pintaba mal pero no va a ser este la solución que nos abra el apetito. Vamos
a probar otra cosa. Vamos a intentar hacer a lo mejor algo relacionado con lo que sería
el análisis de datos. Vamos a probar a ver si yo me pusiera a trabajar con copilot o
quisiera hacer algún tipo de análisis sencillo. Hasta qué punto copilot me podría simplificar
un poco la vida. Vale vamos a hacer alguna prueba de. Pues yo que sé con nampi a cnp.
Vamos a importar nuestra maplotlib justo la que iba a importar. Vamos a importar pandas
a ver si también nos hace falta y vamos a importar. Es que le. Es que le vale y vamos
a decirle venga vamos a importar un data set. Import iris data set iris data set. Vamos
a ver cuánto puedo trabajar solamente haciendo comentarios. Lo ad iris data set. Vale cargamos
el data set iris. Vamos a comprobar si está bien. Vale vamos a ejecutar. Vale sí. Que
asusto. Estaba viendo el error de antes y me estaba asustando. 154. Vale en este caso
el data set viene con 150 flores. Cuatro atributos por cada flor. Correcto. Vale. Entonces yo
quiero de este data set entiendo que por una parte está por lo que he visto los atributos
y por el otro lado estará el target no lo que sería el objetivo de clasificar ese data
set. Por ejemplo mira me dice enséñame los nombres de las cuatro características. Vale
cuáles son las cuatro características. Pues en este caso se palen se paluiz petal lens
petal width. Vale. No va mal la cosa. Create x y y métricas. Vale fijaros en este caso
me quiere crear la matriz x a partir de coger solamente porque él lo decide aquí dos de
las primeras características. No no. Yo quiero coger with all features. Ahora sí. Vale.
Me coge todos los datos de x y a ver si entiende de dónde tiene que sacar la y. Ahí está
el target. Vale. No he programado nada. No he tocado nada de código más que los comentarios.
Vamos a crear una skater plot. Vale me parece correcto. Plotea las dos primeras características
as a skater plot. Se va a poner un poco más complejo. No grid no rejilla. Labels. Espérate.
Le voy a pedir que me ponga las etiquetas que me ponga la cabecera de cada característica
en cada uno de los ejes en español. A ver si me lo traduce. Vale. Vale. En este caso
está cogiendo la primera característica a sabe que tiene que usar el método skater
de matplotlib colorea usando la el target. Vale. Y decide usar un color map de cubo.
Me gusta. No lo pone en español. Ah qué rabia. Quería quería quería. Bueno bueno
no está mal. Vamos a ver cómo sigue la historia. Ya está un show. Vamos a ver. Ahí estaría.
Vamos a reconocer que es un gráfico horroroso porque a nivel de color usar el cubo pues
no es lo más apropiado. Voy a quitarle el color map. Pero bueno la verdad que bastante
bien bastante bien de partida. Quería que ponga comentarios en español. Vale vamos
a poner comentarios en español. Vale una vez he hecho esto. Génere un histograma con
las longitudes de petalos de las flores. Efectivamente. Que cabrón. Sí sí lo ha hecho bien. Creo
que lo ha hecho bien porque en la columna 2. Lo estábamos viendo antes. Efectivamente
la columna 2 sería esta de aquí es la 0 1 2 es la longitud de los pétalos. Ahí pregunta
juanjo cómo supo el nombre de los ejes. Quiero pensar que no es que sepa el estado interno
de la variable. Quiero pensar que es que este es un dataset muy típico y por tanto tiene
memorizado al igual que yo casi también como humano tengo memorizado cuáles son los nombres
de cada etiqueta. Creo que lo tiene memorizado. Eso sí puede ser un poco de overfit en el
sentido estar quien dice prueba a cambiarle el nombre de la variable. Vamos a probar.
Vamos a coger el filter names y vamos a hacerle alguna trampa. Vamos a ponerle un shuffle
columns and filter names in the same way. Vamos a ver si lo hace. No pero vale vale
pero está mal porque lo está haciendo en el eje X. Queremos que lo haga por columnas.
No lo estaría haciendo mal pero no tan tan mal. Qué pena estaba saliendo bien. Vamos
a ponerlo de otra manera. Vale fijaros como yo le he puesto el shape de la columna ahora
sí ha continuado haciendo lo bien ha hecho iris data y no lo ha hecho por filas sino
que lo ha hecho por columnas. Ahora sí estaría bien y filter names. Ahí está. Lo ha cambiado
y estaría bien. Esto esto sí mola. De nuevo apenas he estado tecleando nada. Entonces
si yo hago esto la pregunta es pregunta del millón. Cambiará el cómo está hecho esto.
Entenderá que como hemos hecho un shuffle anteriormente no debería de ir a la dicha
columna. Pues en este caso ya se estaba viendo que no le da igual. Vale. Es decir voy a hacer
primero un print aquí arriba del fitters. En cualquier caso lo que queríamos ver aquí
abajo era que en este caso nos sigue poniendo el índice de dos con lo cual no está entendiendo
que estamos permutando arriba los nombres. Y eso me hace ver que en este caso la etiqueta
la está sacando directamente de su memoria. Vale. Lo puedo entender porque este es un
dataset súper súper típico. Vale. Entonces raro sería lo contrario. Lo contrario si
me hubiera asustado un poco porque significaría que el propio copilot estaría accediendo
al estado de las variables para poder sacar esa información cosa que si de momento por
ejemplo ni siquiera está mirando el resto de archivos que yo tengo en mi proyecto pues
evidentemente no sabe hacer nada más. Vale. Ahí está. Vale. Si quitamos esto ahora sí
nos está saliendo la distribución del pétalo. Vale. Bien. Podríamos probar por ejemplo meter
con una instancia de árbol decisión con una red neuronal de escalar. Fuera números raros
MPDP de classifier nos crea un MLP classifier en una red neuronal que tiene 10 capas ocultas
10 capas o de 10 neuronas 10 neuronas 10 neuronas y que va a ser un máximo de mil
iteraciones m lb punto fit equistrain y rieting. Vale. Vamos a hacer el print de este valor.
Vamos a ver cómo lo hace ser 93. Vale. Vale. Sí. Sí. Ojo. Ojo programando desde los comentarios
o dicho de otra manera estamos viendo como una inteligencia artificial acaba de generar
y acaba de entrenar a otra inteligencia artificial. Ya está. Ese era el momento. Yo como herramienta
o sea pido por favor a la gente de GitHub que adapten esto a lo que sería el medio
ideal para mí que son los cuadernos Júpiter y poder trabajar con esto sería enormemente
cómodo para el trabajo data scientists porque pensar que esta herramienta funciona muy bien
pues para código que es bastante modular que es pequeño para generar funciones y que
le proponga cositas pero dentro de lo que sería la lógica compacta de una funcionalidad
y por ejemplo pues para la demo que hemos hecho antes del sudoku pues no ha salido
muy bien porque al final era una lógica bastante amplia y yo entiendo que los modelos que subyacen
al modelo de codex de copilot pues los transformers también tienen una ventana de entrada bastante
limitada no que sucede que nuestro trabajo al final es bastante secuencial y bastante
instruido por comandos si tú haces un notebook medianamente decente tu notebook va a ser
una secuencia de comandos instrucciones comandos instrucciones y tío es que se puede acercarse
automáticamente con los comandos vale vamos a probar a hacer pues por ejemplo algo un
poquito más avanzado a ver si podemos trabajar con tensor flow let's play with tensor flow
para nos importa tensor flow nampi pandas maplolive y yo no necesito mucho más aquí
bueno voy a decirle lo at M en east data no vamos a sacar otro más un poquito más complicado
a ver si lo encuentra correcto vale lo ha sacado sabe que está sabe que tensor flow
que eras dataset tiene el fashion M en east vamos a hacer un visualized data vale me gusta
también que es que me dejo hacer creo que el copiloto en esta relación soy yo y hace
un fashion M en east lo at data x train vale te hace el train y el y el test y un pelete
M show y creo que poco más no pelete show y ya está vamos a darle a ver qué nos genera
por aquí vale esto sería la primera imagen del dataset fashion M en east para el que
no lo conozca el fashion M en east es como un M en east como un dataset de estos de números
de clasificación de números pero en este caso con imágenes muy reducidas de prendas
de ropa entonces vamos a coger aquí y le voy a decir no visualiza voy a decir que
visualice first images as a 3x3 grid vale esta es la típica tontería que a mí ya
me costaría pararme a pensar un poco cómo demonios maplolive tenía tenía planteada
el figure y todo esto para poder implementarlo a ver cómo lo hace aquí vale me propone
un método plot images vamos a ver vale hace una acert una comprobación para ver si la
longitud de las imágenes que entran es igual al número de clases y es igual a 9 ahí está
me genera el subplot quito esto último yo aquí ya me estoy ahí está me estoy dejando
hacer en este caso con etiquetas quita los tics quita los tics y visualiza ese es el
método se está yendo por donde no debería no vale voy a hacer voy a deshacer entonces
este método a ver si nos propone algo diferente con el control enter que lo tenemos un poco
ahí olvidado vamos a ver este que esté más simple y era un poco lo que estaba buscando
inicialmente vale ahora sí parece que está usando la información que teníamos de arriba
ahí está vale ahora sí tenemos lo que queríamos o sea nos ha costado el resultado lo tenemos
pero es cierto que este resultado alguien que no supiera no hubiera llegado y eso es
otra conclusión interesante que hay que sacar hoy y es que me obliga al menos a mí ser
alguien que sabe de pues por ejemplo en este caso no maplolive tensorflow y todo esto para
poder entender qué está pasando y dónde puede haber un error vale en este caso vamos
a preprocesar entonces no lo digo yo lo dice él dice preproces de data reshape de image
into 28 28 x 1 pues pa'lante vale las imágenes de test también vale coge el train images
y hace train images punto shape 28 28 a priori creo que todo estaría bien no podemos hacer
un print vale en este caso fijaros que nos ha hecho el reshape perfectamente y ahora
vamos a probar a hacer algo ya un poquito más interesante con esto y es que nos construya
una red neuronal con keras build a convolutional neural network model a ver qué nos propone
yo voy a dejarle tirar y cuando tal me planto en medio vale me propone esta la cojo de una
dice un modelo secuencial que tiene una capa convolucional con 32 filtros activación relu
y el input shape efectivamente 28 28 1 lo ha pillado perfecto lo siguiente que hay que
hacer es evidentemente compilar el modelo que ya aquí me lo dice automáticamente lo
va a hacer model punto compile utiliza una optimizada dorada sparse categorical cross
entropy metrics accuracy todo esto está bien y ahora viene el train de model vale un model
fit vamos a entrenarlo por cinco epochs vamos a ver si esto funciona a ver si no hay ningún
fail por el camino vale esto se está entrenando veis como el loss va bajando veis como la
cura si va subiendo veis como estamos viendo una red neuronal que ha sido entrenada por
otra red neuronal nos da miedo no no debería esto en realidad pues está cogiendo un modelo
que está no voy a decir o ver fiteado porque está feo y los investigadores de ponella y
se enfadan pero que menos que al menos está parametrizado dentro de la red neuronal pero
vamos a probar algo un poquito más complejo por ejemplo le podríamos decir visualiza
la net filters vale que nos visualice los filtros de la red neuronal que han sido aprendido
vale que esto ya no es algo tan trivial como el típico ejercicio y efectivamente lo sé
bien que es coger model punto layers se va a la primera capa get weights pelete figure
fijaros ha cogido 32 entendiendo que efectivamente la primera capa tiene 32 filtros qué pasaría
si yo esto lo cambio y pusiera 64 lo entendería vale nos hace la figura y lo entiende se ha
notado un poquito él y como la barriga se suelta un poco con esto pinta muy bien pinta
muy bien esto lo ha pillado muy bien ahí está vale mira que están visualizado los
pesos está perfecto está perfecto es que me es que me voy a preocupar ahora ya un
poco como docente que mis alumnos puedan tener acceso a una herramienta como esta significa
que es que me van a hacer las prácticas la buena gente de github no no mis alumnos que
representan estos son los filtros convolucionales de la red estos son los filtros que van escaneando
cada una de nuestras imágenes en búsqueda en búsqueda de patrones tengo un vídeo en
el canal donde hablo de redes neuronales convolucionales que te invito a ver que ahí se explica todo
bastante bien vamos a hacer alguna pruebilla más estos con python vamos a hacer alguna
prueba con por ejemplo html y cositas así si por ejemplo puedo decir aquí en plan create
a simple website template vale pero esto esto lo acaba de crear ahora así sí sí esto
lo acabo de crear ahora vale vale no tiene estilo no tiene nada voy a decirle lo mismo
pero style y javascript vale fijaros nos ha creado una página yo le he pedido que me
genere una página que tenga estilos y el javascript se lo ha querido comer o no lo
estoy viendo vale pero bueno más o menos crea algo create a big red button with dot
c sb text on it vale veo que se titula dot c sv al menos veo muchas cosas aquí yo creo
que no lo he intentado algo intentado como sería la forma correcta de que me generara
esta este elemento con html o sea si yo hago el hit vale el título por el título que
quieras si yo le pongo style aquí ya podría empezar a meter style si yo aquí le pongo
el body ahí está creando el botón ahora sí le ha puesto el dot c sv ahora aquí el
body font families and serif vale punto btn vale background color rojo border padding
alinear texto centrado text decoration inline block font size 16 pixels todo lo que tu quieras
cursor pointer y cerramos el estilo vale y ahora esto de aquí lo voy a volver a generar
vale ahora vale que se anima con un hover venga vale vale ahora con el body de clas
baton ahora si ha utilizado el botón que la clase baton que ha utilizado arriba se
saca de un enlace del botón a un repositorio de alguien que se llama david darnes barra
dot c sv que voy a mirar a ver si existe por curiosidad personal vale no existe ese es
un ejemplo de los que decíamos al principio no de cómo realmente el sistema no aprende
esta estos datos reales sino que los alucina guardamos y aquí está amigos ojo línea
línea es cierto que es más impresionante porque vas entendiendo todo lo que hace cuando
te escupe todo el código es como que parece que lo ha copiado a algún sitio mola cuando
va haciendo línea línea ciertamente vamos a probar alguna cosa por ejemplo vamos a decirle
crea una función de javascript que cuando de patón is clicked increase the size of
the button vale script functioning increase size variable botón document that element
by id my button no tenemos esa id pero se la ponemos ahora botón style font size vale
este script no va a funcionar vale este script no funcionar fijaros una cosa que esto también
me estoy dando cuenta ahora el contexto que analiza copilot parece ser que es todo lo
anterior no lo posterior vale no no está teniendo en cuenta que el botón ya existía
y que no tenía ningún id con lo cual aquí tenemos que volver a crear el botón con su
id my button vale y a un clic fijaros como ahora si utiliza el método increase size
casi casi está bien tío casi casi lo que le estaría faltando aquí es que a esto le
sumara un numerito vale aquí debería haber por ejemplo uno ahora le falta la clase al
botón vale pues si a ver si le falta la clase te vienes para que le dices class ahí está
vale ahí está class button esto debería funcionar no sé por qué no vale bueno lo
ha medio intentado pero no no no le ha salido bien vale yo no sé si el parsing lo va a
ser bien con el pixel vale y ahora esto sí lo ha hecho bien vale veis que cuando vamos
comentando todo la lógica se va adaptando mejor a lo que necesitamos ahí está vale
ahora sí bar size botón style font size replays pixel por pixel si más o menos entiende
lo que está pasando e consigue llegar a la solución de alguna manera esto debería
tener aquí pues un mejor style font size 16 píxeles y ahora sí seguramente ole ole
esos botones que crecen ole bueno ahí lo veis chicos copilot conclusiones de copilot pues
primera conclusión funciona bastante guay es decir es bastante impresionante si comparamos
con herramientas que ya existían como tab 9 que mucha gente me ha dicho eso ya existía
tab 9 está ahí no amigos tab 9 es gpt 2 básicamente tab 9 utiliza en sus entrañas
a gpt 2 es un producto que se ha construido sobre el trabajo de open y hay y está open
y hay ha sacado a gpt 3 y ha sacado a codex que es una versión mucho más avanzada todo
esto funciona bastante bien pero no es todavía la herramienta que todos esperamos no no no
es el fin de la programación esta herramienta a día de hoy pero bueno recordemos que esto
es una beta de una tendencia que estamos empezando a ver ahora que son la utilización de transformers
a lo bestia para generar código y que esto va a seguir creciendo exponencialmente que
mientras estamos aquí comentando si esta herramienta buena no buena quitará o no quitará
se siguen entrenando transformers más grandes se sigue investigando en mejores métodos
para entrenar sobre código se sigue depurando los dataset de entrenamiento porque ahora
mientras nosotros como usuarios interactuemos con esta herramienta estamos curando mejor
el dataset con el que se va a entrenar la siguiente versión se sigue mejorando el hardware
para que este entrenamiento cada vez sea más más grande y se sigue investigando en ciencia
básica dentro del campo de la ia para encontrar mejores modelos a futuros que a lo mejor no
sea el transformer sino el perceiver que ha sacado ahora de mind y que a lo mejor pues
sea mucho mejor a la hora de hacer esta tarea esto no para vale y hay que estar atentos
no a los puntos en la línea sino hay que ver la función completa y ahora hagamos un
trato recordar que al principio ha hablado de estos modelos tan impresionantes que están
revolucionando lo todo los transformers vale pues mira vosotros os encarguéis de compartir
este vídeo y compartirlo con gente que le puede interesar pues amigos programadores
gente que esté estudiando la facultad y ahora pues quiera desmatricularse y yo me encargaré
de preparar este verano una serie de vídeos donde explicar el funcionamiento de esta impresionante
tecnología hay trato cuento con vosotros también recordaros que en twitch pues vamos
haciendo directos periódicos donde cubrimos muchas de estas noticias no todas acaban llegando
al canal principal de youtube porque me es imposible llevarle el ritmo al desarrollo
de la ia así que bueno pues estar atento a twitch o al canal secundario donde ahora
estamos subiendo todos estos directos y los clips más interesante pues es una muy buena
idea para estar al día de todo lo que va ocurriendo por último te gusta este proyecto
te gusta la labor que hago te parece interesante crees que aporta valor pues si es así te
recuerdo que tenemos disponible un patreon donde podéis hacer una aportación mensual
unos pocos euros el apoyo colectivo que todos formais pues es suficiente para que todo este
proyecto pueda seguir avanzando y ya veis en la ia la cosa no para el ritmo no para
no para no el ritmo no para no y entonces sobre tampoco así que nos vemos con más
inteligencia artificial aquí la próxima semana en dot ccv.