R Keras:基本教程回归中的错误。 py_call_impl(callable, dots$args, dots$keywords) 中的错误:ValueError:在用户代码中:

Posted

技术标签:

【中文标题】R Keras:基本教程回归中的错误。 py_call_impl(callable, dots$args, dots$keywords) 中的错误:ValueError:在用户代码中:【英文标题】:R Keras: Error in basic tutorial regression. Error in py_call_impl(callable, dots$args, dots$keywords) : ValueError: in user code: 【发布时间】:2021-11-26 01:22:33 【问题描述】:

我一直在关注一些不起作用的 tensorflow 教程。

https://www.amestosolutions.no/blogg/using-keras-in-r--simpler-than-ever/ https://www.datacamp.com/community/tutorials/keras-r-deep-learning

这里有一些示例代码,与教程中的内容非常相似。

x <-rnorm(1000) #input variables
y <- rnorm(1000)    #input variables
z <-x+y+rnorm(1000) #output variable
df <-data.frame(x=x,y=y,z=z)

model <- keras_model_sequential() %>%
layer_dense(units = 8,activation = "relu",input_shape = 2) %>%
layer_dense(units = 8,activation = "relu") %>%
layer_dense(units = 1,activation = "relu") 

model %>% compile(
loss = "mse",
  optimizer = optimizer_adam(),
metrics = list("mean_absolute_error"))

model %>% fit(df[,1:2],df[,3], epochs = 20)

当我运行它时,我得到这个错误:

Error in py_call_impl(callable, dots$args, dots$keywords) : 
  ValueError: in user code:

    C:\Users\User\AppData\Local\R-MINI~1\envs\R-RETI~1\lib\site-packages\keras\engine\training.py:853 train_function  *
        return step_function(self, iterator)
    C:\Users\User\AppData\Local\R-MINI~1\envs\R-RETI~1\lib\site-packages\keras\engine\training.py:842 step_function  **
        outputs = model.distribute_strategy.run(run_step, args=(data,))
    C:\Users\User\AppData\Local\R-MINI~1\envs\R-RETI~1\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:1286 run
        return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
    C:\Users\User\AppData\Local\R-MINI~1\envs\R-RETI~1\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2849 call_for_each_replica
        return self._call_for_each_replica(fn, args, kwargs)
    C:\Users\User\AppData\Local\R-MINI~1\envs\R-RETI~1\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:3632 _call_for_each_replica
        return fn(*args, **kwargs)

我使用的是张量流 2.6

这段代码中的什么可能导致我出现这个错误,我将如何解决它?

【问题讨论】:

【参考方案1】:

您可能希望将一个数组传递给fit() 方法以获取输入训练数据,现在您正在传递一个data.frame。在您的示例中将 df 转换为矩阵/R 数组可以使一切正常:

library(keras)
x <- rnorm(1000) #input variables
y <- rnorm(1000)    #input variables
z <- x + y + rnorm(1000) #output variable
mat <- cbind(x, y, z)

model <- keras_model_sequential(input_shape = 2) %>%
  layer_dense(8, activation = "relu") %>%
  layer_dense(8, activation = "relu") %>%
  layer_dense(1, activation = "relu")
#> Loaded Tensorflow version 2.6.0

model %>% compile(
  loss = "mse",
  optimizer = optimizer_adam(),
  metrics = list("mean_absolute_error")
)

model %>% fit(mat[, 1:2], mat[, 3])

由reprex package (v2.0.1) 于 2021-10-05 创建

【讨论】:

所以把data.frame改成矩阵。我以为我已经尝试过那个了,我想我没有。尴尬。

以上是关于R Keras:基本教程回归中的错误。 py_call_impl(callable, dots$args, dots$keywords) 中的错误:ValueError:在用户代码中:的主要内容,如果未能解决你的问题,请参考以下文章

小白学习tensorflow教程一tensorflow基本操作快速构建线性回归和分类模型

小白学习tensorflow教程一tensorflow基本操作快速构建线性回归和分类模型

python 参考:[Python中使用Keras深度学习库的回归教程](http://machinelearningmastery.com/regression-tutorial-keras-

小白学习keras教程一基于波士顿住房数据集训练简单的MLP回归模型

将自定义输出层添加到 R 中的内置(功能)keras 模型

深度学习入门,keras实现回归模型