r - r tensorflow ValueError:列 dtype 和 SparseTensors dtype 必须兼容
问题描述
我正在从 Rbloggers 复制一个示例,但是 train 函数会导致错误:
py_call_impl(callable, dots$args, dots$keywords) 中的错误:ValueError: Column dtype 和 SparseTensors dtype 必须兼容。键:ALUMNUS_IND,列 dtype:,张量 dtype:
该示例的原始代码没有 ALUMNUS_IND 的“dtype = tf$int32”,但它会导致相同的错误消息。有没有办法强制 int32 或者完成 train 功能的解决方案是什么?
张量流包是1.9
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))
解决方案
RDRR 给出了很好的意见。请.funs = as.factor
改成 .funs = as.character
.
# Convert feature to character
donor_data <- mutate_at(donor_data,
.vars = predictor_cols,
.funs = as.character)
推荐阅读
- hybris - 如何在 hybris 中审核日志用户点击?
- hadoop - 无法访问 Hadoop 版本 3 中的 Web 界面
- angular - 关于导航到新路线的滚动问题
- google-app-engine - OperationalError:(2004,“无法创建 TCP/IP 套接字 (13)”)
- ios - 如何使用 UIColletcionView 将 TableViewCell 内的 UICollectionViewCell 中的数据传递到另一个 ViewController
- vb.net - 如何在 xaml 中显示不同对象类型的树视图?
- firebase - Firebase C++ SDK。实时数据库和保持同步
- python - Dockerfile 在文件夹中运行 scrapy crawl 命令
- postgresql - Postgres SSL 连接错误:收到致命警报:handshake_failure
- android - 如何在android中实现未绕过的SSL pinning