首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R tensorflow ValueError:列dtype和SparseTensors dtype必须兼容

R tensorflow ValueError:列dtype和SparseTensors dtype必须兼容
EN

Stack Overflow用户
提问于 2018-09-18 17:29:28
回答 2查看 1.7K关注 0票数 2

我正在复制Rblogger的一个示例,但是train函数会导致一个错误:

Py_call_impl中的错误(可调用的,点$args,点$关键字):ValueError:列dtype和SparseTensors dtype必须兼容。键: ALUMNUS_IND,列dtype:,张量dtype:

示例的原始代码没有用于ALUMNUS_IND的"dtype =tf$ it 32“,但它会导致相同的错误消息。是否有办法强制int32或什么是解决方案,以完成火车功能?

tensorflow软件包是1.9

代码语言:javascript
复制
library(readr)
library(dplyr)
library(tensorflow)
library(tfestimators)


donor_data <- read_csv("https://www.dropbox.com/s/ntd5tbhr7fxmrr4/DonorSampleDataCleaned.csv?raw=1")

my_mode <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}

donor_data <- donor_data %>% 
  mutate_if(is.numeric, 
            .funs = funs(
              ifelse(is.na(.), 
                     median(., na.rm = TRUE),
                     .))) %>%
  mutate_if(is.character, 
            .funs = funs(
              ifelse(is.na(.), 
                     my_mode(.),
                     .)))

predictor_cols <- c("MARITAL_STATUS", "GENDER", 
                    "ALUMNUS_IND", "PARENT_IND", 
                    "WEALTH_RATING", "PREF_ADDRESS_TYPE")

# Convert feature to factor
donor_data <- mutate_at(donor_data, 
                        .vars = predictor_cols, 
                        .funs = as.factor)



feature_cols <- feature_columns(
  column_indicator(
    column_categorical_with_vocabulary_list(
      "MARITAL_STATUS", 
      vocabulary_list = unique(donor_data$MARITAL_STATUS))), 
  column_indicator(
    column_categorical_with_vocabulary_list(
      "GENDER", 
      vocabulary_list = unique(donor_data$GENDER))), 
  column_indicator(
    column_categorical_with_vocabulary_list(
      "ALUMNUS_IND", 
      vocabulary_list = unique(donor_data$ALUMNUS_IND),
      dtype = tf$int32)), 
  column_indicator(
    column_categorical_with_vocabulary_list(
      "PARENT_IND", 
      vocabulary_list = unique(donor_data$PARENT_IND))), 
  column_indicator(
    column_categorical_with_vocabulary_list(
      "WEALTH_RATING", 
      vocabulary_list = unique(donor_data$WEALTH_RATING))), 
  column_indicator(
    column_categorical_with_vocabulary_list(
      "PREF_ADDRESS_TYPE", 
      vocabulary_list = unique(donor_data$PREF_ADDRESS_TYPE))), 
  column_numeric("AGE"))


row_indices <- sample(1:nrow(donor_data), 
                      size = 0.8 * nrow(donor_data))
donor_data_train <- donor_data[row_indices, ]
donor_data_test <- donor_data[-row_indices, ]

donor_pred_fn <- function(data) {
  input_fn(data, 
           features = c("AGE", "MARITAL_STATUS", 
                        "GENDER", "ALUMNUS_IND", 
                        "PARENT_IND", "WEALTH_RATING", 
                        "PREF_ADDRESS_TYPE"), 
           response = "DONOR_IND")
}  

  classifier <- dnn_classifier(
    feature_columns = feature_cols, 
    hidden_units = c(80, 40, 30), 
    n_classes = 2, 
    label_vocabulary = c("N", "Y"))

  train(classifier, 
        input_fn = donor_pred_fn(donor_data_train))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-14 06:32:28

注释下面的代码来修复它-

代码语言:javascript
复制
# Convert feature to factor
donor_data <- mutate_at(donor_data,.vars = predictor_cols, 
.funs = as.factor)
票数 1
EN

Stack Overflow用户

发布于 2019-05-14 07:53:51

RDRR给出了一个很好的意见。请将.funs = as.factor转换为.funs = as.character

代码语言:javascript
复制
# Convert feature to character
donor_data <- mutate_at(donor_data, 
                        .vars = predictor_cols, 
                        .funs = as.character)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52391832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档