首页 > 解决方案 > R:使用 Torch 进行优化 - optimizer$step() 抛出此错误

问题描述

在 R 中使用 Torch 创建一个简单的神经网络,其中 optim_adam 作为优化器。在尝试更新模型参数时,我在运行优化器$step() 时收到以下错误 - “param$ state[["exp_avg"]] 中的错误:'closure' 类型的对象不是子集的对象”。

可能是什么原因?

我在运行此代码时也遇到错误(https://blogs.rstudio.com/ai/posts/2020-10-09-torch-optim/)。

代码:

d_in <- 3
d_out <- 1
n <- 100


# create random data
x <- torch_randn(n, d_in)
y <- x[, 1, NULL] * 0.2 - x[, 2, NULL] * 1.3 - x[, 3, NULL] * 0.5 + torch_randn(n, 1)

d_hidden <- 32

model <- nn_sequential(
  nn_linear(d_in, d_hidden),
  nn_relu(),
  nn_linear(d_hidden, d_out)
)

learning_rate <- 0.08

optimizer <- optim_adam(model$parameters, lr = learning_rate)

### training loop --------------------------------------------------------------

for (t in 1:200) {
  
 
  y_pred <- model(x)
  
  loss <- nnf_mse_loss(y_pred, y, reduction = "sum")
  
  optimizer$zero_grad()
  loss$backward()
  
  optimizer$step()
}

标签: roptimizationtorch

解决方案


推荐阅读