Etiqueta: C#

Trece modelos de aprendizaje automático (Parte 1/4)

En los últimos años, el Aprendizaje Automático, o “machine learning”, se ha colocado en la primera línea de la actualidad de las tecnologías emergentes. Esta tendencia ha crecido enormemente con la explosión de infraestructuras y metodologías que facilitan llevar a cabo desarrollos orientados al aprendizaje de máquinas.

Todos los modelos orientados al aprendizaje automático están desarrollados en código abierto, pero lo más destacado de todos ellos es el modo en el que han sido diseñados para abstraer al usuario de los mecanismos más complejos que intervienen en el aprendizaje automático, facilitando y haciendo accesibles sus técnicas a un colectivo de desarrolladores mucho más extenso.

Trece modelos de desarrollo de machine learning destacan en el panorama -se trata de sistemas de nueva incorporación o bien que han sido actualizados en los últimos meses-, generalmente todos llaman la atención por ser productos que tienen una gran aceptación en el sector TI, por tratar de aportar simplicidad a los procesos, o bien por abordar algún tipo de reto específico asociado con el aprendizaje de las máquinas.

Apache Spark MLlib

Se trata de uno de los sistemas más conocidos en el mercado por pertenecer a la familia Hadoop. No obstante, dispone de un modelo de procesamiento de datos para la memoria interna que ha sido desarrollado fuera del ecosistema Hadoop, lo que le facilita su entrada en otros entornos diferentes. Spark se ha convertido en una herramienta de aprendizaje en desarrollo de sistemas de learning machine gracias a una extensa y creciente librería de algoritmos que pueden ser aplicados con información en la memoria interna del sistema a la velocidad de la luz.

Apache Singa

Muy similar a lo que sucede en los procesos naturales, las estructuras que gestionan el aprendizaje automático profundo de Singa también gestionan el lenguaje y el reconocimiento visual. Este sistema ha sido aceptado para formar parte de Apache Icubator, una red de código abierto cuya finalidad es facilitar el proceso en la realización de modelos de aprendizaje profundo de máquinas que han de operar con grandes volúmenes de datos. Singa dispone de un modelo de programación simple que permite la implementación de técnicas de aprendizaje a redes formadas por clusters de máquinas y soportando una gran variedad de trabajos de aprendizaje.

Caffe

Originalmente desarrollada en 2013 para proyectos de visión artificial, Caffe se corresponde con un modelo de aprendizaje automático profundo, pero “creado con los atributos de expresión, inmediatez o modularidad en mente”, señaló la firma. Caffe ha experimentado una gran expansión tras culminar con éxito sus proyectos de visión artificial, pasando a destacar en otras aplicaciones multimedia. La velocidad es la prioridad máxima para Caffe, un motivo que le ha llevado a desarrollar el sistema con lenguaje C++ con la ayuda de la aceleración de CUDA.

-Computerworld

 

Android Studio se enfoca en la edición de C++

Android_studio

En la versión 1.3 del IDE también recibe mejoras en memoria y pruebas.

La herramienta para desarrollar en el sistema operativo de Google, Android Studio, ha sido considerada como “el IDE oficial de Android”, al cual se le agregan mejoras en cuanto a alojamiento, anotaciones y perfiles de memoria del lenguaje C++ con el lanzamiento de la versión 1.3 esta semana.

Basado en el ambiente de desarrollo Java IntelliJ Idea de JetBrains, Android Studio es visto por los analistas como una alternativa superior al IDE Eclipse. La versión 1.3 ya está disponible en el canal de lanzamiento de Android Studio. Las características clave incluyen edición completa y soporte de debugging para C++, un nuevo perfilador de memoria y la mejora en el testing, de acuerdo con el blog de Android Developers.

Lo que se destaca en la actualización, es el soporte para C++, Google ha incluido un Early Access Preview de un editor y debugger de C++ y un plugin experimental incorporado como parte del reléase estable 1.3 de Android Studio. “En desarrollo se tiene soporte para proyectos más complejos y configuraciones incorporadas”, señaló Jamal Eason, gerente de producto de Android, en el blog. Por otro lado, el soporte para las anotaciones de código in line puede ayudar a los desarrolladores a gestionar el modelo de nuevos permisos en la próxima liberación de Android M, que fue anunciado a finales de mayo.

En cuanto al desempeño y las pruebas, la versión 1.3 permite la captura y análisis de las snapshots de la memoria en el formato nativo HPROF, a través del Android Memory Viewer. Un rastreador de asignación actualizado añade una forma visual para ver las asignaciones de las aplicaciones. Para aumentar la flexibilidad del testeo que se tenga que realizar, los desarrolladores pueden colocar pruebas de código en un módulo separado y utilizar un nuevo plugin de pruebas (com.android.test) en lugar de mantener las pruebas junto al código de la aplicación, pero esta característica requiere que la aplicación utilice Gradle Plugin 1.3.

Android Studio ahora cuenta con administración de las actualizaciones del SDK, aunque los desarrolladores todavía pueden ajustar las preferencias a través de la función Android SDK Manager. “De forma predeterminada, Android Studio ahora le pedirá las nuevas versiones del SDK & Tool”, señaló Eason. Para la unión de datos, la versión 1.3 permite a los desarrolladores construir diseños declarativos, la ventaja la obtendrán al reducir código repetitivo, donde la lógica de aplicación se limita a los diseños.

-Paul Krill, InfoWorld

Código abierto impulsa interoperabilidad del Internet de las Cosas

Internet de las Cosas interoperabilidadEl único límite al Internet de las Cosas no es la imaginación ni la tecnología, sino los proveedores. ¿Podrán comunicarse nuestros refrigeradores y lavadoras con nuestros televisores o nuestros smartphones, o incluso con cualquier otro dispositivo de los muchos que rodean y rodearán nuestras vidas? El código abierto será la clave para que eso suceda.

Sin interoperabilidad, los dispositivos electrónicos y de consumo,  así como los dispositivos para llevar puestos (wearable) equipados  con sensores, no se reconocerán entre sí. No hay proveedores de electrónica de consumo lo suficientemente grandes para imponer una interoperabilidad total. Pero tampoco hay proveedores tan grandes como para frustrar el camino hacia la creación del Internet de las Cosas. En este escenario, la industria del código abierto cree tener la respuesta.

Dentro de menos de doce meses, en el próximo Consumer Electronics Show (CES) 2015 que se realizará en enero del próximo año, veremos si la industria da algún paso adelante hacia la interoperabilidad en el Internet de las Cosas. En diciembre pasado, Linux Foundation, consorcio sin ánimo de lucro que promueve la adopción de este sistema operativo, creó la AllSeen Alliance, que emplea una pila de código desarrollada por Qualcomm llamada AllJoyn Framework bajo el paraguas de su código abierto.

Este código C++ soporta los principales sistemas operativos y chips, de manera que cualquier fabricante de dispositivos o productos electrónicos, incluso un fabricante de bombillas LED que use el código AllJoyn, tendrá una base para conectarse con otros productos que también utilicen dicho código.

Jim Zemlin, director ejecutivo de Linux Foundation, cree que AllSeen será adoptado por la industria. Para los fabricantes que quieran conectividad, la cuestión es sencilla. ¿Quieren los proveedores escribir software para cada uno de sus productos o smartphones o prefieren descargar y utilizar este código? La disponibilidad de tal código creará el efecto red e impulsará la interoperabilidad ente dispositivos, afirma Zemlin. “De hecho, veremos muchos productos con este código este mismo año”.

Sin interoperabilidad habrá un mundo fragmentado

La AllSeen Alliance fue creada con el apoyo de grandes fabricantes como LG Electronics, Panasonic, Sharp, Qualcomm y AT&T Digital Life, entre otros. Sin embargo, llama la atención la ausencia de Samsung y Apple. Los analistas consideran que, cuando se domina el mercado, como es el caso de estos dos fabricantes, no suelen gustar los estándares abiertos, porque permiten a otros introducirse en sus mercados.

En su opinión, estos fabricantes sólo usarán AllSeen si se ven forzados a la interoperabilidad por motivos de gobierno y gestión, si dejan de ser dominantes o se lo exigen los clientes. No obstante, los expertos consideran que sin interoperabilidad Internet de las Cosas no pasará de ser un mundo fragmentado incapaz de explotar todo su potencial.

Linux domina la computación de alto rendimiento, y los servidores basados en este sistema operativo, gracias a los proveedores de nube, están ganando rápidamente presencia en el mercado. Sin duda, los sistemas de código abierto, como Hadoop, son críticos en Big Data, un componente clave del Internet de las Cosas, concluyó Zemlin.

¿Cómo hacer para que las apps funcionen correctamente?

Apps móvilesLos sistemas de prueba deben soportar frecuentes cambios y ser capaces de mantener el ritmo acelerado provocado por la rápida evolución. Además, los scripts de test móviles también deben ser modificados fácilmente y poder portarse entre plataformas, para evitar tener que repetir el trabajo ya realizado, lo que podría provocar retrasos y aumentar los costos.

Las aplicaciones móviles, las populares apps, deben cumplir innumerables requisitos para trabajar sin problemas sobre cualquier plataforma móvil actual y futura. Deben asegurar su compatibilidad funcional en diferentes sistemas operativos, sobre distintos navegadores, redes y anchos de banda y en variados formatos de pantalla, táctil o no.

“Incluso, deben cumplir los requisitos de los dispositivos todavía en desarrollo, “lo que hace que el proceso de prueba pueda ser desalentador”, explicó Ricardo Montes, director de Maketing de Micro Focus para Iberoamérica.

Para simplificar el proceso, dijo, se han identificado siete pasos a seguir que ayudarán a los desarrolladores a lanzar sus apps al mercado con éxito.

Por un lado está el probar las aplicaciones móviles de una manera que refleje el comportamiento del usuario.

Por otro, hay que utilizar los lenguajes estándar de la industria que garantizan una mayor estabilidad. Java o C# se integrarán con cualquier sistema de administración continua.

Además, las herramientas de testing deben soportar múltiples iteraciones con las principales plataformas de desarrollo móvil.

También habrá que utilizar tráfico real con las aplicaciones nativas que imitan dispositivos reales aumenta la precisión de las pruebas de rendimiento.

Las pruebas deben contemplar escenarios de uso intensivo de las aplicaciones con miles de usuarios simultáneos. Usar emuladores y simuladores reduce el trabajo de campo. Además, la prueba debe simular el mundo real, cubriendo y replicando las velocidades de ancho de banda móviles reales, tales como GPRS, EDGE, UMTS, HSDPA , HSPA + y LTE.

Y por último, es necesario identificar el subconjunto de pruebas correcto. No es realista esperar que usted será capaz de probar su aplicación en todos los dispositivos conocidos y sistemas operativos móviles. Lo mejor es identificar los actores clave y volver a calibrar si es necesario, señaló Montes.