El lanzamiento de Aprendizaje profundo con R, 2.ª edición coincide con nuevos lanzamientos de TensorFlow y Keras. Estos lanzamientos traen muchas mejoras que permiten un código R más idiomático y conciso.
En primer lugar, el conjunto de métodos Tensor para los genéricos base R se ha ampliado considerablemente. El conjunto de genéricos de R que funcionan con TensorFlow Tensors ahora es bastante extenso:
strategies(class = "tensorflow.tensor")
(1) - ! != ( (<-
(6) * / & %/% %%
(11) ^ + < <= ==
(16) > >= | abs acos
(21) all any aperm Arg asin
(26) atan cbind ceiling Conj cos
(31) cospi digamma dim exp expm1
(36) ground Im is.finite is.infinite is.nan
(41) size lgamma log log10 log1p
(46) log2 max imply min Mod
(51) print prod vary rbind Re
(56) rep spherical signal sin sinpi
(61) type sqrt str sum t
(66) tan tanpi
Esto significa que, a menudo, puede escribir el mismo código para TensorFlow Tensors que lo haría para arreglos R. Por ejemplo, considere esta pequeña función del Capítulo 11 del libro:
Tenga en cuenta que funciones como reweight_distribution()
trabajar con vectores 1D R y tensores TensorFlow 1D, ya que exp()
, log()
, /
y
sum()
son todos genéricos de R con métodos para TensorFlow Tensors.
Del mismo modo, esta versión de Keras trae consigo un refinamiento en la forma en que se definen las extensiones de clase personalizadas para Keras. Parcialmente inspirado en el nuevo R7
sintaxis, hay una nueva familia de funciones: new_layer_class()
, new_model_class()
,
new_metric_class()
, y así. Esta nueva interfaz simplifica sustancialmente la cantidad de código repetitivo necesario para definir extensiones de Keras personalizadas: una interfaz R agradable que sirve como fachada sobre la mecánica de las clases de subclases de Python. Esta nueva interfaz es el yang del yin de %py_class%
–una forma de imitar la sintaxis de definición de clase de Python en R. Por supuesto, la API “en bruto” de convertir un
R6Class()
a Python a través de r_to_py()
todavía está disponible para los usuarios que requieren un management whole.
Esta versión también trae consigo una gran cantidad de pequeñas mejoras en la interfaz de Keras R: actualización print()
y plot()
métodos para modelos, mejoras para freeze_weights()
y load_model_tf()
nuevas utilidades exportadas como zip_lists()
y %<>%
. Y no olvidemos mencionar una nueva familia de funciones R para modificar la tasa de aprendizaje durante el entrenamiento, con un conjunto de programas integrados como
learning_rate_schedule_cosine_decay()
complementado con una interfaz para crear horarios personalizados con new_learning_rate_schedule_class()
.
Puede encontrar las notas completas de la versión para los paquetes R aquí:
Sin embargo, las notas de lanzamiento de los paquetes R solo cuentan la mitad de la historia. Las interfaces de R para Keras y TensorFlow funcionan incorporando un proceso completo de Python en R (a través de la
reticulate
paquete). Uno de los principales beneficios de este diseño es que los usuarios de R tienen acceso whole a todo tanto en R como en R. y Pitón. En otras palabras, la interfaz de R siempre tiene características similares a las de la interfaz de Python: todo lo que puede hacer con TensorFlow en Python, puede hacerlo en R con la misma facilidad. Esto significa que las notas de la versión para las versiones de Python de TensorFlow son igualmente relevantes para los usuarios de R:
¡Gracias por leer!
Foto por Rafael salvaje
en
Unsplash
Reutilizar
El texto y las figuras tienen licencia de Inventive Commons Attribution CC POR 4.0. Las figuras que se han reutilizado de otras fuentes no se incluyen en esta licencia y se pueden reconocer por una nota en su título: “Figura de…”.
Citación
Para la atribución, cite este trabajo como
Kalinowski (2022, June 9). Posit AI Weblog: TensorFlow and Keras 2.9. Retrieved from https://blogs.rstudio.com/tensorflow/posts/2022-06-09-tf-2-9/
cita BibTeX
@misc{kalinowskitf29, creator = {Kalinowski, Tomasz}, title = {Posit AI Weblog: TensorFlow and Keras 2.9}, url = {https://blogs.rstudio.com/tensorflow/posts/2022-06-09-tf-2-9/}, 12 months = {2022} }