¿Es posible compilar una función NumPy para TensorFlow como PyAutoDiff para Theano?

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

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.

More Interesting

¿Cuáles son algunos buenos libros para principiantes y avanzados sobre redes neuronales e inteligencia artificial?

¿Cuál es el estado del arte en la síntesis de texto?

¿La traducción automática alguna vez reemplazará a los traductores humanos? ¿Cómo podría una traducción automática comprender el contexto sociolingüístico de un texto?

¿Cuáles son las características importantes para el análisis de sentimientos basado en aspectos en el enfoque de aprendizaje automático? ¿Qué algoritmos se pueden usar para extraer estas características?

¿Cuál es la relación entre los clasificadores uno contra uno, conjunto y SVM?

¿Cómo podemos usar Tensorflow para problemas de clasificación?

¿Cuáles son algunos buenos proyectos de aprendizaje automático que implican el uso de estructuras de datos y tienen aplicaciones de la vida real y se pueden hacer en 2-3 semanas?

Composición musical algorítmica: idea para una investigación

¿Puedo hacer una competencia de kaggle con un archivo csv de entrenamiento de 0.5 Gb en mi computadora de 8 Gb y tener éxito?

¿Cuál es el mejor método para presentar la idea de una red neuronal de convolución a un profano?

¿Cuál es el potencial de las redes neuronales en la compresión de datos?

¿Qué piensa sobre los procesos gaussianos profundos?

Cómo recopilar datos para problemas de la vida real mientras se entrena un modelo de aprendizaje automático

¿Cómo se compara XGBoost (aumento de gradiente) con Random Forest?

Cómo construir sobre modelos de red profunda de detección de objetos pre-entrenados (YOLO) para detectar nuevas clases