簡體   English   中英

在 R 中為 Keras 深度神經網絡創建預測時,“預測”function 出錯

[英]Error with "predict" function, when creating predictions for Keras Deep Neural Network in R

因此,我使用 R 中的 Keras 使用自己的數據創建了一些深度神經網絡回歸模型。當我在將近一年前創建模型時,我幾乎可以肯定我沒有遇到這些錯誤,而且似乎無論我如何構造或操作數據,我得到了完全相同的錯誤,所以我不確定它是我的代碼問題還是程序問題。

當我擬合模型時,它起作用了,當我插入驗證數據時,它清楚地起作用並顯示了驗證數據和訓練數據的差異,所以我不確定為什么我一直收到關於無法執行此錯誤消息預測model。如果有任何建議,我將不勝感激,謝謝!

完整錯誤信息:

Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "keras_training_history"

代碼設置的完整示例:

#Load Libraries
library(readxl)
library(tidyverse)
library(tensorflow)
library(keras)
library(caTools)
library(tfruns)
library(caret)

#Creating Full Data Set
FDS1 <- OB1 %>% left_join(.,OB2, by="VAR1") %>% mutate(VAR2=if_else(VAR3 > VAR4,"1","0")) %>% na.exclude() %>% select(., -VAR5)

#Converting Variables:
FDS1$VAR3 <- as.factor(MWC18$VAR3)
FDS1$VAR4 <- as.factor(MWC18$VAR4)
FDS1$VAR8 <- as.factor(MWC18$VAR8)

#Creating One-Hot Encoding
dummy1<- dummyVars(" ~ .", data=FDS1)
DFDS1 <- data.frame(predict(dummy1, newdata = FDS1)) 

#Creating Subset
SUB1<- DFDS1 %>% select(.,-VAR9,-VAR10,-VAR11) %>% relocate(.,VAR14) 

#Setup for KERAS Deep Neural Network 
sample1<-sample.split(SUB1[,1],SplitRatio=.75)
train1<-subset(SUB1,sample1==TRUE)%>%as.matrix()
test1<-subset(SUB1,sample1==FALSE)%>%as.matrix()

#Creating Train & Test Sets for X&Y
y_train_1<-train1[,1]
y_test_1<-test1[,1]
x_train_1<-train1[,-1] 
x_test_1<-test1[,-1] 


#Creating DEEP NEURAL NETWORK W/ KERAS
DNN_1<- keras_model_sequential()
DNN_1 %>%
  layer_dense(units = 30,
              input_shape = c(59))%>% layer_dropout(0.2)%>% 
  layer_dense(units = 15 ,
              activation = "elu")%>% layer_dropout(0.2)%>%
  layer_dense(units = 8 ,
              activation = "relu")%>% layer_dropout(0.2)%>%
  layer_dense(name = "OutputLayer",
              units = 1)

#Compliling Model
DNN_1 %>% compile(loss = "mean_absolute_error",
                                  optimizer = "adam",
                                  metrics = c("mean_absolute_error"))
#Fitting Model
FIT_DNN1<-DNN_1%>%fit(x_train_1,y_train_1,epoch=50,batchsize=4,validation_data=list(x_test_1,y_test_1),verbose=2)

#Prediction Model
pred <- FIT_DNN1 %>% predict(x_test_1)

#Error Message
Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "keras_training_history"

我期待根據測試數據創建預測,但它一直說我無法使用這種形式的數據創建預測。 當我嘗試了幾種不同的方式來呈現與測試數據格式匹配的測試數據時,我不確定“Keras_training_history”是如何成為一個問題的。

有誰知道錯誤消息甚至指的是過程的哪個方面? (我自學了 Keras 並且一直在為錯誤消息而苦苦掙扎)非常感謝!

其實我只是有同樣的問題。 在這種情況下,預測 function 似乎需要您編譯的 lstm。 您是否嘗試過:

預測 <- DNN1 %>% 預測(x_test_1)

另見https://www.r-bloggers.com/2021/04/lstm.network-in-r/

據我了解,您需要訓練 model 才能看到(您可以 plot 擬合對象)丟失的 function 和優化器。

但我不確定。 我正想問你是否解決了這個問題......但是我沒有找到評論按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM