对于像tensorflow和pytorch很多人肯定不陌生,这两者在python生态下部署了从企业界到科研的全流水线。对于很多习惯用R的数据科学家来说可能对R更加偏爱。我们知道tensorflow已经很早的通过高级的API接口支持R并且提供了一些列的高级方法。现在torch也登陆R语言大家庭,其提供了定义和训练神经网络的功能。

torch的核心是“autograd”,autograd为张量上的所有操作提供自动微分,它是一个按运行定义的框架,这个在torch for R已经实现,然后我们基于其训练我们的神经网络。

首先安装torch:


# 安装torch
# 安装完成后使用library(torch)载入时会下载必要的运行库,地址如下:
# https://download.pytorch.org/libtorch
# 

devtools::install_github("mlverse/torch")

简单示例:


library(torch)

# 一个基于torch的Autograd的简单线性回归展示

x <- torch_randn(100, 2)
y <- 0.1 + 0.5 * x[, 1] - 0.7 * x[, 2]

w <- torch_randn(2, 1, requires_grad = TRUE)
b <- torch_zeros(1, requires_grad = TRUE)

lr <- 0.5
for (i in 1:100) {
  y_hat <- torch_mm(x, w) + b
  loss <- torch_mean((y - y_hat$squeeze(1)) ^ 2)
  
  loss$backward()
  
  with_no_grad({
    w$sub_(w$grad * lr)
    b$sub_(b$grad * lr)
    
    w$grad$zero_()
    b$grad$zero_()
  })
}
print(w)
print(b)

更多教程信息请参考:https://torch.mlverse.org/docs/

参考资料:

1.https://github.com/mlverse/torch

2.https://torch.mlverse.org/

3.https://www.r-bloggers.com/2020/09/introducing-torch-for-r/