在R Studio中使用Keras构建分类模型

3

我正在尝试通过R stdio中的Keras Tensor Flow构建分类模型,但是我遇到了以下错误。请问有人知道原因吗?这是我第一次使用Keras或深度学习。谢谢

  > set.seed(10)
> ind <- sample(2, nrow(stdk), replace=TRUE, prob=c(0.80, 0.2))
> stdk.train <- stdk[ind==1, ]
> stdk.test <- stdk[ind==2, ]
> change.train <- stdk[ind==1, 5]
> change.test <- stdk[ind==2, 5]
> stdk.trainLabels <- to_categorical(change.train)
> stdk.testLabels <- to_categorical(change.test)
> 
> modelk <- keras_model_sequential()
> modelk %>% 
+   layer_dense(units = 23, activation = 'relu', input_shape = c(40)) %>% 
+   layer_dense(units = 9, activation = 'softmax')
> summary(modelk)
Model

    Layer (type)                                      Output Shape                                 Param #          
    ================================================================================================================
    dense_1 (Dense)                                   (None, 23)                                   943              
    ________________________________________________________________________________________________________________
    dense_2 (Dense)                                   (None, 9)                                    216

总参数数:1,159 可训练参数数:1,159 不可训练参数数:0

  > get_layer(modelk, index = 1)
Dense
> modelk$layers
[[1]]
Dense

[[2]]
Dense

> modelk$inputs
[[1]]
Tensor("dense_1_input:0", shape=(?, 40), dtype=float32)

> modelk$outputs
[[1]]
Tensor("dense_2/Softmax:0", shape=(?, 9), dtype=float32)

> modelk %>% compile( loss = 'categorical_crossentropy',  optimizer = 'adam', metrics = c('accuracy')
+ )
> modelk %>% fit(
+   stdk.train, 
+   stdk.trainLabels, 
+   epochs = 200, 
+   batch_size = 5   )
Error in py_call_impl(callable, dots$args, dots$keywords) : 
  ValueError: No data provided for "dense_1_input". Need data for each key in: ['dense_1_input']
Detailed traceback: 
  File "C:\Users\A\ANACON~1\envs\R-TENS~1\lib\site-packages\tensorflow\contrib\keras\python\keras\models.py", line 844, in fit
    initial_epoch=initial_epoch)
  File "C:\Users\A\ANACON~1\envs\R-TENS~1\lib\site-packages\tensorflow\contrib\keras\python\keras\engine\training.py", line 1406, in fit
    batch_size=batch_size)
  File "C:\Users\A\ANACON~1\envs\R-TENS~1\lib\site-packages\tensorflow\contrib\keras\python\keras\engine\training.py", line 1300, in _standardize_user_data
    exception_prefix='model input')
  File "C:\Users\A\ANACON~1\envs\R-TENS~1\lib\site-packages\tensorflow\contrib\keras\python\keras\engine\training.py", line 82, in _standardize_input_data
    '". Need data for each key in: ' + str(names))
1个回答

8

在使用 R 语言的 keras + tensorflow 库时,我也曾遇到类似错误。花费了一天时间解决问题,我认为你可能也会遇到同样的问题。

当你的输入是数据框时,它无法识别输入中的列数。只需将输入的类型转换回矩阵,并给出正确的列数,现在就可以正常工作了。


谢谢!这就是我遇到的问题。 - ronomal
在尝试从Keras模型中进行预测并将其用于"LIME"包中的预测时,我遇到了同样的问题,这是在“TensorFlow for R Blog”中的“Churn”教程中提出的(https://blogs.rstudio.com/tensorflow/posts/2018-01-11-keras-customer-churn/)。将用于预测的DF转换为矩阵解决了该问题。 - Peter
@Peter Heindl ::: 我也在研究这个例子。我遇到了另一个问题,只有一列输出。我修复了列名并添加了第二列("No"):predict_model(x = model_keras, newdata = as.matrix(x_test_tbl), type = 'raw') %>% base::as.data.frame() %>% magrittr::set_colnames(c("Yes")) %>% dplyr::mutate(No=1-Yes) %>% tibble::as_tibble() - nate
这篇帖子(底部的最后一篇)包含教程代码的已更正版本。https://github.com/rstudio/keras/issues/447 - Peter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接