knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
The goal of the envi
package is manage mulitple R environments (collections of package). This means providing functionality to retrieve remote environments, create new environments, and switch between them. The envi
package integrates functionality provided by Kevin Ushey's renv
package, which provides individual environment fuctionality, and other packages including git2r
and piggyback
, which provides source control and access to remote environments.
To draw an analogy from the Python community, just as the renv
package is similar to the virtual environments functionality provided in Python, envi
is similar to conda. However, the scope is more limited in the following ways.
envi
package is used from within the R programming environment. This has the advantage of making it more accessible to R users, who may not have the system administration experience needed to tune installations or troubleshoot problems with paths. At the same time, envi
environment configurations and the R environments they manage can easily be modified by more savvy users. envi
package allows you to configure a Python environment through renv
, it is intended to create and manage R environments. This limitation in scope makes the management of package dependencies, one of Conda's core goals, almost trivial because of the R commuities enforcement of downstream package compatibility via CRAN.The envi
package is still under developement and is not available on CRAN. However, it can be installed from GitHub with:
# install.packages("devtools") devtools::install_github("kaneplusplus/envi")
Suppose you'd like to create a deep learning model with the keras
but you don't have Python installed, you do have Python installed but you're not sure how to get R to talk with Python, or you're feeling lazy. Instead of configuring your keras
installation, you can download and manage an enironment on Github with envi
on R version 2.6.1. You can check your version with Sys.getenv()[['R_VERSION']]
library(envi) # Get the appropriate repo for the platform. envi_image <- switch(Sys.info()[['sysname']], Darwin = "keras-environmentx86_64-apple-darwin15.6.0.tar.bz2", Windows = "keras-environmentx86_64-w64-mingw32.zip", Linux = "keras-environmentx86_64-pc-linux-gnu.tar.bz2") # Get the environment and call it keras-env. Note that the environment is big # and the following can take some time. envi_pb_install(envi_image, repo = "kaneplusplus/keras-envi", handle = "keras-env") # See which environments we have and where they are located. envi_list()
Now that we have the environment, which includes keras
and an installation of Python, let's use it to build a simple deep learner.
# Activate the enviroment. envi_activate("keras-env") # Now we can use the environments packages and other functionality. library(keras) # Create a model to predict iris species. dl_model <- keras_model_sequential() %>% layer_dense(units = 4) %>% layer_dense(units = 3, activation = "softmax") # Compile the model. dl_model %>% compile( loss = loss_categorical_crossentropy, optimizer = optimizer_adadelta(), metrics = c("accuracy")) # Create the design matrix and dependent variables. form <- Species ~ . -1 iris_x <- model.matrix(form, iris) iris_y <- to_categorical(as.numeric(iris$Species) - 1) # Fit the model. dl_model %>% fit( iris_x, iris_y, batch_size = 150, epoch = 1000, validation_split = 0.1) # Calculate the model accuracy. dl_acc <- apply(predict(dl_model, iris_x), 1, which.max) == as.numeric(iris$Species) sum(dl_acc) / length(dl_acc)
Please note that the 'envi' project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.