domingo, 17 de febrero de 2019

"Estoy aprendiendo Tensorflow pero no entiendo, se me dificulta aprender"

La frase que da el título a este post es una frase que he escuchado ya varias veces en los últimos meses  y personalmente creo que no es problema del framework(o de otros similares con el mismo problema)  entonces espero con este post ayudar a través de ciertas recomendaciones a personas en esta situación .

Aun que en la actualidad(2019) Tensorflow se ha vuelto cada vez mas amigable y accesible integrando APIs de alto nivel como Keras esto no ha sido siempre así(cuando empece a usar TF en 2015 todo era bajo nivel salvo el wrapper "skflow" que buscaba dar a TF la sencillez en API de scikit-learn y que ahora ha sido integrado a TF en el subpaquete "contrib")y de todas maneras existen aún con APIs de alto nivel en algún momento nos podemos encontrar con operaciones de bajo nivel que pueden en un inicio parecer complicadas.

Y si el framework es tan popular,utilizado en la industria y en research y alimenta muchas de las aplicaciones inteligentes de la actualidad(la mayoría de AI de Google esta hecha con TF) por que pareciera aveces ser tan complicado de aprender? Posiblemente hayan muchas respuestas para esto, o tal vez ninguna pero mi opinión personal respecto a lo que he visto es que el problema esta en la falta de familiaridad con los conceptos matemáticos que Tensorflow nos permite implementar.

Es como querer aprender a usar una calculadora  para resolver ecuaciones sin tener claro que es una ecuación, para que buscamos resolverla y como interpretar la solución que la calculadora devuelve, y mas importante aún: como podemos aplicar la resolución de ecuaciones en problemas ,o bien pensemos en otro ejemplo en el cual  una calculadora permite calcular de manera rápida y sencilla una raíz cuadrada en lugar de hacerlo manualmente,pero si no conocemos el significado del resultado de esto y en que momento utilizarlo ,sus aplicaciones e interpretación , el aprender a hacerlo en la calculadora será de poco provecho y hasta confuso, esto a mi parecer pasa muchas veces con TF(y similares).

Tensorflow no es un framework como los que tradicionalmente usamos en desarrollo de software, es decir no esta orientado a la creación de aplicaciones web,móviles o similares si no es mas bien un Framework matemático orientado al desarrollo de aplicaciones numéricas por lo cual es importante conocer el significado de las operaciones que nos ayuda a realizar, de hecho en su propio nombre podemos ver la importancia que tiene la matemática en TF:


  • Tensor: objeto matemático(de álgebra lineal) que generaliza los objetos mas familiares: vectores y matrices 
  • Flow: Tensorflow se basa en un grafo de operaciones en el que cada nodo del grafo es una operación numérica y las aristas del grafo son tensores que FLUYEN de un nodo a otro.
Mi recomendación para personas que estén teniendo dificultad y confusión aprendiendo TF es primero aprender o refrescar la memoria respecto a los conceptos matemáticos y estadísticos subyacentes, esto hará que luego aprender TF sea mucho mas sencillo, intuitivo y se le encuentre un significado ,al final TF es solo una herramienta , o un medio para aplicar matemática utilizada en aplicaciones de machine learning, data science y  similares. 

Personalmente creo que esto se basa en 3 pilares que acá listo y para los cuales pongo enlaces a material útil para aprender o refrescar estos temas.:
  1. Algebra Lineal:
  2. Cálculo multivariable: si  no estas familiarizado con cálculo de una variable, el multivariable será más complicado de entender por lo cual sería recomendable antes de multivariable empezar con calculo diferencial, en ML no se utiliza mucho el cálculo integral por lo que se puede enfocar menor esfuerzo a este.
  3. Estadística y probabilidad: hay muchas cosas importantes de esto en data science pero considero que entender distribuciones de probabilidad, como interpretarlas, samplearlas(obtener muestras aleatorias  de estas), medirlas, calcularlas a partir de un conjunto de datos,  o comparar 2 (por ejemplo a través de entropía cruzada o divergencia de Kullback-Leibler) además de cosas como medir la correlación entre 2 variables, etc.

Espero con esto ayudar a personas que esten teniendo problemas con TF  o similares.



sábado, 18 de mayo de 2013

Cubo de leds 3X3X3 musical con Arduino.

Desde hace un buen tiempo ya, me he interesado mucho en la electrónica y he disfrutado mucho(aun que también sufrido) los cursos relacionados a ella en mi carrera(ing. en sistemas, USAC), pero en el 2010 mi gusto y curiosidad por esta ciencia aumento considerablemente cuando precisamente en uno de estos cursos: "arquitectura de computadores y ensambladores 1" tuve mi primer contacto con Picaxe(Picaxe es un microcontrolador sencillo de programar aunque bastante poderoso),al poco tiempo de estar usando este microcontrolador mi gusto por estos empezo a incrementar y también mis ideas de todo lo interesante que se podría realizar con estos,mi gusto por esto incluso me llevo a realizar cosas que no pedian en mi proyecto de  dicho curso, como adaptar un control(mando) de Play Station 1 para controlar mi proyecto agregando al control funcionalidad para envio inalambrico de información por medio de radiofrecuencia.


El tiempo paso y a partir del segundo semestre del 2012 he sido auxiliar precisamente de ese curso "arquitectura de computadores 1",ahora las cosas han cambiado y no se utiliza Picaxe ni la obsoleta tarjeta 8255, pero se sigue manejando microcontroladores, en específico Arduino. En el semestre actual como práctica de laboratorio asigne a los estudiantes realizar un cubo de leds,pero a diferencia de la infinidad de cubos de leds encontrados en la red, este tenia una caracteristica particular: era un cubo de leds musical, el cual emitia melodias sincronizadas o acorde a las animaciones de los leds. A continuación se puede ver el video del que a mi parecer fue el mejor proyecto, así como el enlace para descargar el diagrama , y codigo de programación de Arduino para realizar esta práctica:

Video del cubo de leds 3x3x3

Y el enlace para la documencaicon con la explicacion ,diagrama y codigo de programacion de Arduino:

Documentación:

miércoles, 8 de mayo de 2013

Ensayo acerca de CLIPS(Herramienta para elaboración de sistemas expertos)(Inteligencia Artificial)

Ya tenía ratos de no publicar nada,pero hace un par de minutos me encontraba haciendo una tárea para uno de los cursos que mas me llamaba la atención  y que mas deseaba llevar(incluso pasé toda la carrera ansioso por llegar a él)  al momento de ver el pénsum e iniciar mi carrera ya que fue una de mis motivaciones a estudiarla(además de mi intereses por la robótica)  y es  con uno de los que voy a cerrar(si todo sale bien) en un par de semanas: Inteligencia  Artificial. Lamentablemente no recibí el curso como hubiera querido y me hubiese gustado ya que el monton de cursos mas no me dejaban tiempo para leer e investigar por mi cuenta, ademas de que el curso solo se imparte una vez a la semana los viernes, y todos en ingenieria USAC saben que los viernes en el primer semestre del año, el edificio se cierra muchas veces por lo de la huelga, etc. ademas que de por sí el catedrático es conocido por no llegar constantemente a dar clases.

La tarea que me encuentro realizando consiste en realizar un ensayo de una página acerca de la herramienta que he usado a lo largo del semestre en el laboratorio,CLIPS, que sirve para la elaboración de sistemas expertos(sub-area de la IA), este ensayo no pretende ser útil para quien desea aprender a utilizar CLIPS o quien desea aprender conceptos acerca de sistemas expertos,solo pretende ser una breve descripción o introducción a la herramienta pero se me hizo interesante postearlo ya que cuando inicie con la herramienta, antes de aprender a usarla,quise aprender que erá en sí, y encontre muy poca información, al menos en español, para aquellas personas que estudian sistemas en la USAC o cualquier carrera o lugar donde el metodo es similar de enseñanza("aqui esta lo que tienen que hacer, con la herramienta que lo tienen que hacer, vayan y aprendan solos y por su cuenta como hacerlo y como usar la herramienta") puede ser útil primero tener una ídea de que se hace con la herramienta antes de apnender a hacerlo en sí, acá esta mi ensayo:

CLIPS(C Language Integrated Production System)  es una herramienta para la creación de sistemas expertos.  El estudio de sistemas expertos es una rama de la inteligencia artificial que consiste en la creación y estudio de sistemas informáticos que simulan el proceso de aprendizaje, memorización, razonamiento y acción de un experto humano en cualquier área de la ciencia y el conocimiento.
 Los orígenes se remontan a 1984 en un centro espacial de la nasa. En ese entonces LISP era el lenguaje usado mayoritariamente para el trabajo en el área de sistemas expertos, pero tenía 3 problemas que lo llevaron a su fallo: baja disponibilidad, alto costo, pobre integración con otros lenguajes.  Estas razones llevaron  a que la división de inteligencia artificial de la nasa decidiera que se creara una herramienta para sistemas expertos escrita y basada en el lenguaje C. En 1986 la versión 3.0 de CLIPS fue liberada para grupos afuera de la NASA.

La interacción con clips se lleva a cabo principalmente a través de un command prompt, en este se teclean las instrucciones  para evaluación y ejecución, aunque también CLIPS permite otras formas de interactuar, como carga de archivos, procesamiento BATCH e integración con otros lenguajes.

CLIPS provee 3 elementos básicos para la escritura de programas: tipos de datos primitivos, funciones para manipular datos y “constructs para agregar a una base de conocimiento.
Los tipos de datos básicos son un conjunto que incluye algunos de los tipos que ya conocemos como por ejemplo: float,integer,string(y symbol) además de otros no tan conocidos como :external-address, fact-address, instance-name and instance-address.
Una función en CLIPS es una pieza de código ejecutable identificada por un nombre específico y que retorna un valor útil o realiza un efecto secundario útil (como desplegar información).

De los 3 elementos que mencione, tal vez el más útil y usado es el elemento conocido como “constructs”, que como mencione sirve para agregar información a la base de conocimiento de CLIPS, siendo los “constructs” más usados los siguientes: defmodule, defrule,deffacts,  deftemplate,defglobal,  deffunction,  defclass,  definstances,  defmessage-handler,  defgeneric,  y defmethod.

En clips existen 3 formatos para representar información: facts, objetos, variables globales. Cada fact representa una pieza de información y que son la unidad fundamental de datos usada por las reglas, una regla es una de las formas principales de representar información en CLIPS, una regla es utilizada para representar heurísticas, las cuales especifican una serie de acciones a ser realizadas para una determinada situación. Al crear un sistema experto, el creador define un set de reglas que trabajan en conjunto para resolver un problema.
El segundo elemento que mencione, objetos  se maneja en CLIPS por medio de COOL (Clips Object Oriented Language), un objeto en CLIPS es similar a lo que ya conocemos de programación orientada a objetos pero con ciertas variantes. Y por último, una variable global en CLIPS no es nada diferente a lo que ya conocemos de lenguajes de programación comunes, es decir que una variable global es un “espacio” de almacenamiento al cual se le puede asignar a que almacene un valor, y este valor será visible en todo el entorno CLIPS.

domingo, 5 de agosto de 2012

Introducción a linux , gnu , y el mundo del software libre.



Últimamente bastantes conocidos que no estudian alguna carrera relacionada con tecnología o software , así como otros conocidos de los primeros semestres de la carrera han manifestado su interés y/o curiosidad por Linux, Gnu y el software libre. Hace ya bastante tiempo cuando tuve que ser guia o tutor(no se cual seria la palabra correcta) de un grupo de estudiantes de las practicas iniciales de Ingenieria en sistemas de la usac(la carrera y la universidad donde yo estudio) me toco escribir un articulo para los estudiantes donde pudieran informarse mas y adentrarse en el tema. Me considero poco conocedor de estos temas, pero segun varios compañeros, lo poco que conozco lo explique de una manera bastante entendible para personas con poco o ningun conocimiento de estos temas en el articulo que ya mencione, por esta razon a continuacion publicare el enlace a este articulo, el cual habia creado en un blog dedicado a subir informacion para los alumnos de las practicas intermedias.


Enlace hacia el articulo.

domingo, 11 de septiembre de 2011

Zelda majoras mask

El tiempo...cruel y temeroso...
Un pantano ,donde alguien esta a punto de ser ejecutado por un crimen que no cometio...
Un oceano,donde un musico caido lamenta eternamente su fallo...
Una montaña,donde un lider observa impotentemente que no tiene el poder para salvar a su gente...
Un valle,donde los fantasmas del pasado aun pelean una guerra que termino mucho tiempo atras
Un pueblo...atrapado en si mismo , donde el fin comienza..
Y un muchacho.. un heroe..con todo el tiempo del mundo y a la vez el tiempo contado para salvar a este mundo. Esto es Zelda majoras mask.



Todo aquel que lo ha jugado recordara ese arbol en la luna ,la dificultad y alegria de conseguir la "Fierce deity mask" , la tragica historia de amor entre anju y kafei ,el atormentado  musico de la fuente, la presion constante que ejerce esa malevola sonrisa de la luna junto con el tiempo contado para salvar al pueblo, su atmosfera agonica y tetrica , ese sentimiento de estar atrapado en un sueño de Tim Burton sin salida ,la macabra risa del vendedor de mascaras,la atormentada expresion de la luna y la tenebrosa atmosfera que rodea al skull kid ,las historias de sufrimiento, tristeza y compasion de los personanes,todo eso y mucho mas ,hacen de este capitulo en la saga de Zelda el mas magico , el mas oscuro y de alguna forma, el mas "adulto" de toda la serie, considerado el mas "raro y agonico"
aunque considero que el mejor juego de toda la historia de los videojuegos es su antecesor zelda ocarina of time,probablemente Maroras mask sea mi favorito y el que mas ha marcado mi vida en esta serie.

Como dije es considerado el juego mas raro de la serie ,no solo por su sentimiento agonico y tetrico, sino que a pesar de ser uno de los mas cortos(solo tiene 4 templos) su dificultad es bastante alta y la historia te mantiene pegado al control ,por primera vez el enemigo a vencer no es ganondorf y a diferencia de la mayoria de zeldas cada personaje(principal o secundario) tienen una historia y un pasado que no esta relacionado soloamente con la historia y linea principal del juego, sino con varias sub-historias y eventos , algunos felices,  y otros no tanto


Un juego con aproximadamente mas de 10 años de existencia,podra ser considerado por muchos como "no tan bueno" debido a la tecnologia de las consolas actuales ,pero  estamos en un tiempo donde los fabricantes de videojuegos se enfocan en ver quien crea el videojuego con las mejores graficas y la mejor tecnologia y dejan atras el punto mas importante y por el que inicio esta industria: la diversion del jugador y la facilidad de llevarlo a mundos de fantasia.
Eso y la nostalgia que me trae recordar mi niñez , hacen que prefiera jugar este videojuego aun con sus graficas de consola de 64 bits , que jugar un videojuego moderno de playstation 3 que probablemente me aburra a la hora de jugarlo.

Todo en este videojuego me parece brillante , sus magicos mundos de fantasia , su excelente musica, su tragica y oscura historia , los secretos y aveces oscuras intenciones que guarda cada uno de sus personajes, y no solo los personajes principales ya que cada personaje de la aventura cuenta una historia ,algunas buenas,y algunos secretos del pasado que aun los atormentan. Desde el "trailer" del videojuego que veia a diario en nickelodeon , se pudo ver que era un zelda diferente y mas oscuro , con una musica tenebrosa en el trailer que en ese tiempo solo habia escuchado en un videojuego: el tenebroso y tambien excelente shadowman.A continuacion los trailers o comeciales del juego,uno de los cuales pareciera ser un trailer de pelicula estilo armagedon y no un videojuego:

Si alguien me preguntara como le puedo describir majoras mask o que diferencia tiene este con los demas zeldas, le diria que es un zelda bastante peculiar, ya que es el mas "tenebroso" de todos, lleno de mounstruos y fantasmas del pasado aun atormentados , y un pueblo cerca de su fin inminente,el enemigo a vencer pro primera vez no es ganondorf ,sino un agobiado y atormentado skull kid y el tiempo antes de que la luna caiga.  Precisamente este ambiente "tetrico" que rodea el juego sea lo que probablemente llevo a la creacion de una vieja leyenda urbana que rodea a un mencionado "cartucho maldito" y un joven de 19 años ,algun dia mencionare mas a detalle esta leyenda urbana que pareciera sacada de un episodio de "le temes a la oscuridad" en otro post dedicado , pero por ahora dire que basta con poner "majoras mask jadusable" o "majoras mask ben" o "majoras mask cartucho maldito" en algun buscador o youtube para leer la leyenda del cartucho maldito.

Hoy se conmemoran 10 años desde la primera vez que termine este magnifico videojuego y por eso decidi crear este post , ya que siento cierta nostalgia por este juego ,tengo la suerte de poseer la edicion de coleccionista y la version de la consola virtual de wii ,pero espero poder ver algun dia el remake en alguna consola moderna, sin que pierda esa magia que transmitia hace 10 años,aun recuerdo que hace 10 años estaba tan emocionado en el templo final que mi mente no prestaba atencion a lo que en ese momento preocupaba al mundo entero, los atentados terrotistas del 11 de septiembre del world trade center, el jugar hoy este juego hizo que me transportara a mi niñez , a sexto primaria nuevamente.Un juego grandioso de principio a fin , con una historia y musica memorable , mi recomendacion para quien no la conoce y las nuevas generaciones de videojugadores , es que dejen atras el estereotipo moderno de que "un buen juego ,necesariamente necesita buenas graficas" y desempolven esta joya del pasado, ya sea en emulador o por medio de descarga para la consola virtual de wii y para quienes lo jugaron en su pasado, quiza en su niñez , traerlo de vuelta a la vida y volver a jugarlo ,en internet se encuentra el soundtrack el cual de seguro transporta a quien lo ha jugado a tiempos memorables. A continuacion algunas de las razones de entre las muchas que hay , que hacen que el juego sea considerado el mas tetrico ,triste, oscuro y tenebroso de los zeldas:


  • Skull Kid: uno de los personajes principales del juego , niño solitario con apariencia de espantapajaros, que guiado por su soledad y falta de amigos, roba la mascara de majora la cual posee un gran y malvado poder y posee al deku kid obligandole a realizar cosas malvadas,entre ellas ocasionar el fin de el pueblo.
  • Vendedor de mascaras: el duenio de la mascara de majora, con una risa tetrica y psicopata,si link no es capaz de detener el mal en el tiempo que tiene, la luna cae sobre el pueblo envuelta en una bola de fuego, teerminando con todo en el y al fondo solo se oye la risa malevola del vendedor de mascaras.
  • Transformaciones de link con cada transformacion que link realiza con las mascaras ,se logra ver la agonia que esta le produce, se oye el crujido de los huesos y los ojos venosos junto con el grito de link hacen vrr que la transformacion le produce gran dolor.
  • Los alienigenas del rancho romani: como si fuera poco lo que ya sucede en el juego , la primera noche un grupo de alienigenas llegan al rancho romani a secuestrar a las vacas.
  • Las almas de los dueños de las mascaras: durante el juego ,es posible encontrar las almas atormentadas de algunos personajes,a las cuales link por medio de una melodia dara sanacion y descanso y a cambio ellas le daran una mascara con la que podra obtener las habilidades de cada uno.
  • Mascara deku: a diferencia de las mascaras mencionadas anteriormente, la mascara deku proviene del hijo asesinado del mayordomo deku.
  • Momia del valle ikana: cuando link entra a la casa de "la casa de musica" en el valle,esta parece ser una casa normal,hasta que link baja al sotano, donde se encuentra un mitad hombre/mitad momia gritando de dolor y escondiendose de su hija.
  • Grito de skull kid al llamar a la luna : se puede escuchar  este grito cuando skull kid llama a la luna , suena como a grito de niño fantasma de pelicula de terror.
  • Tingle: el personaje que vende los mapas a link , pareciera tener problemas mentales  y psicologicos y una osbesion por las adas del bosque y convertirse en una de ellas , teniendo 35 años.
  • La triste historia de amor entre anju y kafei: anju y kafei son una pareja que esta a punto de casarse, pero unos dias antes de la boda kafei desaparece dejando a anju muy triste,la madre de anju le dice que deje de pensar en el y busque refugio en el rancho romani,donde vive romia quien supuestamente tiene un amorio con el prometido de anju.
  • La musica del juego: muchas canciones del juego transmiten un sentimiento de desesperacion , como que se tratara de pelicula de ciencia ficcion donde el fin del mundo se acerca, como armagedon ,talvez el mejor ejemplo sea la cancion de fondo del dia final ,la cancion da la impresion de que la esperanza esta perdida, el fin definitivamente llegara.


  • .No puedo expresar en este post , la magia que transmite este juego, asi que a jugarlo se ha dicho!! y an

    lunes, 14 de marzo de 2011

    Arquitectura de computadores y ensambladores 1-practica1

    Como requisito para la entrega de la practica1 del curso de Arquitectura de computadores y ensambladores 1, se solicito a los estudiantes que realizaramos un documento con informacion que pudiera ser utilizada por otras personas que busquen temas e informacion del lenguaje ensamblador, y que este documento sea publicado en internet, ya sea en un blog o pagina peronal. Por esta razon a continuacion adjunto el documento mencionado.

    Descargar el archivo.

    sábado, 5 de marzo de 2011

    Metallica-Creeping Death(seattle 1989)

    Todavia sigo picado por la fecha , por lo cual publico un video de probablemente una de las canciones que mas, esperaba en el concierto(talvez la que mas)  , y que aunque si la tocaron , fue la que tubo problemas tecnicos.Hace muchos años me decian que este concierto fue tocado el dia en que naci, nunca pude averiguar si esto  era cierto, por lo que si alguien sabe en que fecha se hizo, le agradezco que me lo diga. Por cierto, otra cosa, mi amigo gabriel(disculpa vos ,no recuerdo tu apellido), publico tambien algo conmemorando el primer año del concierto , aqui esta el link.

    Blog de gabriel

    Y aqui esta el video: