【问题标题】:R: Error in is_symbol(x) : object '.' not found (keras)R:is_symbol(x) 中的错误:对象“。”未找到 (keras)
【发布时间】:2021-04-08 13:22:09
【问题描述】:

我正在使用 R 编程语言。我正在尝试按照此处关于神经网络 (lstm) 和时间序列的 R 教程:https://blogs.rstudio.com/ai/posts/2018-06-25-sunspots-lstm/

我决定为本教程创建自己的时间序列数据(“y.mon”)(相同的格式和相同的变量名):

library(tidyverse)
library(glue)
library(forcats)
library(timetk)
library(tidyquant)
library(tibbletime)
library(cowplot)
library(recipes)
library(rsample)
library(yardstick) 
library(keras)
library(tfruns)
library(dplyr)
library(lubridate)
library(tibbletime)
library(timetk)

index = seq(as.Date("1749/1/1"), as.Date("2016/1/1"),by="day")


index <- format(as.Date(index), "%Y/%m/%d")

value <- rnorm(97520,27,2.1)

final_data <- data.frame(index, value)

y.mon<-aggregate(value~format(as.Date(index),
                              format="%Y/%m"),data=final_data, FUN=sum)

y.mon$index = y.mon$`format(as.Date(index), format = "%Y/%m")`
y.mon$`format(as.Date(index), format = "%Y/%m")` = NULL


y.mon %>%
  mutate(index = paste0(index, '/01')) %>%
  tk_tbl() %>%
  mutate(index = as_date(index)) %>%
  as_tbl_time(index = index) ->  y.mon

从这里开始,我按照教程中的说明进行操作(将“sun_spots data”替换为“y.mon”。到目前为止一切正常(我昨天发布了一个问题,由于过于详细而被关闭https://stackoverflow.com/questions/65527230/r-error-in-is-symbolx-object-not-found-keras - 代码可以参考rstudio教程):

#ERROR
coln <- colnames(compare_train)[4:ncol(compare_train)]
cols <- map(coln, quo(sym(.)))
rsme_train <-
  map_dbl(cols, function(col)
    rmse(
      compare_train,
      truth = value,
      estimate = !!col,
      na.rm = TRUE
    )) %>% mean()

rsme_train
Error in is_symbol(x) : object '.' not found

我发现另一个处理类似问题的 stackoverflow 帖子:Getting error message while calculating rmse in a time series analysis

根据这个stackoverflow帖子,第一个错误可以这样解决:

coln <- colnames(compare_train)[4:ncol(compare_train)]
rsme_train <-
    map_df(coln, function(col)
        rmse(
            compare_train,
            truth = value,
            estimate = !!col,
            na.rm = TRUE
        )) %>% 
    pull(.estimate) %>%
    mean()

rsme_train

但是,本教程的以下部分有一个类似的部分,即使在应用更正后,同样的错误仍然存​​在:

    compare_test %>% write_csv(str_replace(model_path, ".hdf5", ".test.csv"))
    compare_test[FLAGS$n_timesteps:(FLAGS$n_timesteps + 10), c(2, 4:8)] %>% print()

cols <- map(coln, quo(sym(.)))
    rsme_test <-
      map_dbl(cols, function(col)
        rmse(
          compare_test,
          truth = value,
          estimate = !!col,
          na.rm = TRUE
        )) %>% mean()
    
    rsme_test
    
    #errors:
    Error in stri_replace_first_regex(string, pattern, fix_replacement(replacement),  : 
      object 'model_path' not found
    Error in is_symbol(x) : object '.' not found

这些错误使我无法完成本教程的其余部分。 有人可以告诉我如何解决这些问题吗? 谢谢

【问题讨论】:

  • 你为什么要加载所有这些包?
  • 感谢您的回复!它们都是教程所必需的
  • 这里似乎没有使用它们(不是全部),如果您知道实际涉及哪些包,它将帮助您解决问题。也不要让我安装一堆不需要的包来帮助你。我认为显而易见的问题是:你认为“。”是什么?是代表?显然 R 不知道,所以如果你能告诉它,事情会更好。
  • 抱歉 - 为了在本教程中找到我需要帮助的地方,其中许多软件包都是必需的。我只是想让这篇文章尽可能地重现。如果你愿意,我可以在这个问题中删除它们。
  • 学习的一部分是真正理解代码中发生的事情。创建一个最小的示例既可以帮助您理解,也可以隔离问题所在。我要说的一件事是,自 2018 年以来 rlang 发生了很多变化,因此如果需要进行大量更改,我不会感到惊讶。另外,当您对最后一个代码块进行更改时会发生什么?比如使用pull(.estimate)?

标签: r keras neural-network time-series data-visualization


【解决方案1】:

尝试在map_dbl 中使用coln

rsme_test <- map_dbl(coln, function(col)
    rmse(
      compare_test,
      truth = value,
      estimate = !!col,
      na.rm = TRUE
    )) %>% mean()

【讨论】:

  • 感谢您的回复。由于上述行中的错误,我无法执行此步骤:
  • # 构建一个数据框,其中包含 (i in 1:nrow(pred_test)) { varname % write_csv(str_replace(model_path, ".hdf5", ".test.csv")) stri_replace_first_regex (string, pattern, fix_replacement(replacement) 中的错误:找不到对象'model_path'
  • coln
  • 运行 rlang::last_error() 以查看发生错误的位置。 rsme_test % mean() 错误:结果 1 必须是单双精度,而不是双精度类 tbl_df/tbl/data.frame 和长度为 3 的向量运行 rlang::last_error() 以查看错误发生的位置。
  • 抱歉,我认为要求我们为您运行整个教程是不公平的。每个帖子应该只包含一个特定的问题。阅读您的帖子,我以为您被困在rsme_test 步骤,因此我回答了那部分。我不知道那部分之前或之后会发生什么。
猜你喜欢
  • 2013-11-18
  • 2022-01-16
  • 2013-02-20
  • 2017-08-26
  • 2013-11-25
  • 2020-07-22
  • 2018-06-28
  • 2015-12-28
  • 2013-06-22
相关资源
最近更新 更多