对于像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/