使用keras在R Studio中构建预测模型

时间:2019-10-29 17:03:05

标签: r tensorflow keras

我正在尝试通过R Studio中的Keras张量流构建预测模型,但出现以下错误。请问有人知道吗?这是我第一次使用Keras或深度学习以及R。请帮助我,并提出更改建议。谢谢,队友!

图书馆(keras)

  

train_data <-read.csv(file =“ trialtrainfinal.csv”,head = FALSE)
  test_data <-read.csv(file =“ trialtest.csv”,head = FALSE)
  train_targets <-read.csv(file =“ traintarget.csv”,head = FALSE)

     

平均值<-apply(train_data,2,平均值)
  std <-apply(train_data,2,sd)
  train_data <-标度(train_data,center =平均值,scale = std)
  test_data <-标度(test_data,center = mean,scale = std)

     

build_model <-function(){
  +模型<-keras_model_sequential()%>%
  + layer_dense(单位= 64,激活=“ relu”,
  + input_shape = dim(train_data)[[2]])%>%
  + layer_dense(单位= 64,激活=“ relu”)%>%
  + layer_dense(单位= 1)
  +
  +模型%>%compile(
  +优化程序=“ rmsprop”,
  +损失=“ mse”,
  +指标= c(“ mae”)
  +)
  +}

     

k <-4
  索引<-样本(1:nrow(train_data))
  折叠<-cut(1:length(indices),breaks = k,labels = FALSE)
  num_epochs <-100
  all_scores <-c()
  for(i in 1:k){
  + cat(“加工折页编号”,i,“ \ n”)
  + val_indices <-其中(倍数== i,arr.ind = TRUE)
  + val_data <-train_data [val_indices,]
  + val_targets <-train_targets [val_indices,]
  +
  +
  + partial_train_data <-train_data [-val_indices,]
  + partial_train_targets <-train_targets [-val_indices]
  +
  +
  +模型<-build_model()
  +
  +
  +模型%>%fit(partial_train_data,partial_train_targets,
  +历元= num_epochs,batch_size = 1,详细= 0)
  +
  +
  +结果<-模型%>%评估(val_data,val_targets,详细= 0)
  + all_scores <-c(all_scores,results $ mean_absolute_error)   +}
  1号加工折页
  py_call_impl中的错误(可调用,dots $ args,dots $ keywords):     ValueError:没有为“ dense_5”提供数据。需要每个键中的数据:['dense_5']

详细的回溯:   文件“ E:\ Anaconda \ envs \ r-reticulate \ lib \ site-packages \ tensorflow_core \ python \ keras \ engine \ training.py”,第728行,适合     use_multiprocessing = use_multiprocessing)   文件“ E:\ Anaconda \ envs \ r-reticulate \ lib \ site-packages \ tensorflow_core \ python \ keras \ engine \ training_v2.py”,行224,适合     distribution_strategy = strategy)   _process_training_inputs中的第547行“ E:\ Anaconda \ envs \ r-reticulate \ lib \ site-packages \ tensorflow_core \ python \ keras \ engine \ training_v2.py”     use_multiprocessing = use_multiprocessing)   _process_inputs中的第594行的文件“ E:\ Anaconda \ envs \ r-reticulate \ lib \ site-packages \ tensorflow_core \ python \ keras \ engine \ training_v2.py”     步骤=步骤)   _standardize_user_data中第2519行的文件“ E:\ Anaconda \ envs \ r-reticulate \ lib \ site-packages \ tensorflow_core \ python \ keras \ engine \ training.py”     exception_prefix ='目标')   文件“ E:\ Anaconda \ envs \ r-reticul

当我使用命令“ summary(model)”时,会得到以下结果:Model:“ sequential”


图层(类型)输出形状参数#

密集(密集)(无,64)896


dense_1(密集)(无,64)4160


dense_2(密集)(无,1)65

总参数:5,121 可训练的参数:5,121 不可训练的参数:0


py_call_impl(可调用,dots $ args,dots $ keywords)错误:   ValueError:没有为“ dense_2”提供数据。需要每个键中的数据:['dense_2']

2 个答案:

答案 0 :(得分:0)

鉴于错误消息,它表明没有正确填充正在馈入模型的数据。您可能需要确认partial_train_data和partial_train_targets实际上具有值,并且在形状等方面以及网络根据设计期望的方面是一致的。在模型构建步骤之后,应该有一个可以使用的命令,例如model.summary(),它会根据数据形状/尺寸返回网络体系结构。我希望这会有所帮助。

答案 1 :(得分:0)

尝试将train_data和test_data转换为矩阵。 使用data.matrix或as.matrix