He escrito algunas capas personalizadas en Tensorflow y, hasta donde sé, el marco no proporciona una diferenciación automática. Si desea escribir sus propias operaciones en TensorFlow, tendrá que escribir una función para un pase directo y una función que calcule el gradiente con respecto a cada entrada de la operación.
Esto está muy bien soportado en el lado C ++ de la API: puede simplemente escribir una biblioteca C ++ que registre la operación junto con el (los) gradiente (s), compilarla en una biblioteca compartida y estará listo para comenzar. También es posible que desee proporcionar inferencia de forma para la operación, ya que simplificará la depuración y algunos marcos basados en TensorFlow (como, por ejemplo, Tensorpack: ppwwyyxx / tensorpack) pueden no funcionar correctamente sin la inferencia de forma. La guía completa para escribir una operación personalizada en C ++ se puede encontrar aquí: Agregar una nueva operación
En cuanto a Python, hay una funcionalidad llamada “py_func” que le permite definir una operación personalizada en python (se describe aquí: tensorflow / tensorflow). Esto habría hecho las cosas mucho más fáciles, si no fuera por una advertencia “pequeña”: no hay soporte oficial para proporcionar un gradiente (¡y mucho menos la diferenciación automática!). Puede hacerlo funcionar (y sí, lo hice funcionar una vez), sin embargo, esto requiere un pirateo realmente desagradable. Vea este problema de github: Gradiente de tf.py_func y cómo definir gradientes para una operación personalizada solo con python · Problema # 1095 · tensorflow / tensorflow, y este archivo para obtener instrucciones detalladas sobre cómo hacerlo funcionar: Tensorflow_py_func_with_grad.py
- Todos dicen que el aprendizaje automático ocupará trabajos de un gran no. de personas, ¿es esto cierto? ¿Hay algún lado positivo?
- ¿Cómo se reduce el tamaño de una red neuronal profunda sin gastar grandes recursos para reentrenarla?
- Proyectos para el procesamiento del lenguaje natural y herramientas de lenguaje para un lenguaje índico
- ¿Pandora graba cuando en la canción presiono saltar, pulgar arriba o pulgar abajo?
- ¿Qué idioma es el mejor para construir código de producción de aprendizaje automático?
Obviamente, esta es una gran desventaja para TensorFlow, sin embargo, recuerde que el marco todavía es bastante joven y está en desarrollo extremadamente activo, por lo que apuesto a que esta funcionalidad se agregará tarde o temprano.