====== Install tensorflow on MacBook Pro M1 and kerns for R ======
I have a 2021 MacBook Pro with Apple M1 Pro chip. I tried to install tensor flow on it following the instruction of Apple here https://developer.apple.com/metal/tensorflow-plugin/ as well as many other instructions online but failed to make it work.
===== Install tensorflow =====
After trial and error, this is what worked for me.
- Follow the instruction here https://developer.apple.com/metal/tensorflow-plugin/ to install miniconda.
- Install tensorflow using ''python -m pip install tensorflow-macos==2.9''
- Install tensorflow-metal ''using python -m pip install tensorflow-metal==0.5.0''
After this, you can test the installation using the example below. First, save the following code to a file such as test.py.
import tensorflow as tf
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
cifar = tf.keras.datasets.cifar100
(x_train, y_train), (x_test, y_test) = cifar.load_data()
model = tf.keras.applications.ResNet50(
include_top=True,
weights=None,
input_shape=(32, 32, 3),
classes=100,)
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
model.compile(optimizer="adam", loss=loss_fn, metrics=["accuracy"])
model.fit(x_train, y_train, epochs=5, batch_size=64)
Then, test it using ''python test.py''.
===== Install keras for R =====
To use tensorflow in R, first install the packages tensorflow and keras within R using
install.packages('tensorflow')
install.packages('keras')
Then, create or open the ''.Renviron'' file within your user directory, e.g., using ''nano ~/.Renviron''. Add the following in the file (this will allow R to find your python and tensorflow installation.
RETICULATE_PYTHON = "~/miniconda/bin/python"
Now, you can test whether it works or not within R using the example below (from the book Introduction to Machine Learning).
## Data
library(ISLR2) ## install the package if not yet
Gitters <- na.omit(Hitters)
n <- nrow(Gitters)
set.seed(13)
ntest <- trunc(n / 3)
testid <- sample(1:n, ntest)
x <- scale(model.matrix(Salary ~ . - 1, data = Gitters))
y <- Gitters$Salary
## Now run a simple example
library(keras)
## this is used to build the model
## first layer is the hidden layer with 50 nodes
## output one layer with one node active the linear activiation function
modnn <- keras_model_sequential() %>%
layer_dense(units = 50, activation = "relu", input_shape = ncol(x)) %>%
layer_dropout(rate = 0.4) %>%
layer_dense(units = 1, activation = "linear")
summary(modnn)
## communicate with python
modnn %>% compile(loss = "mse",
optimizer = optimizer_rmsprop(),
metrics = list("mean_absolute_error") )
## conduct the analysis
nn.fit.1layer <- modnn %>% fit(
x[-testid, ], y[-testid],
epochs = 1000, batch_size = 32,
validation_data = list(x[testid, ], y[testid])
)
{{tag>R}}
~~LINKBACK~~
~~DISCUSSION~~