【发布时间】:2021-10-14 19:02:18
【问题描述】:
data <- data2018
# Splitting data into train and test
set.seed(101)
sample <- sample.int(n = nrow(data), size = floor(.75 * nrow(data)), replace = F)
train <- as.data.table(data[sample, ])
test <- as.data.table(data[-sample, ])
# Preparing the training set
cols <- c(names(train))
train %<>% mutate_at(cols, as.factor)
train %<>% mutate_at(cols, as.numeric)
train %<>% mutate_at(cols,~(scale(.) %>% as.vector))
train[is.na(train) ] <- 0
# Splitting train into x (parameters) and y (prediction values)
x_train <- data.matrix(train[,-"1"])
y_train <- data.matrix(train[, "1"])
# Designing model
model <- keras_model_sequential() %>%
layer_dense(units = 128, activation = 'tanh', input_shape = dim(x_train)[-1]) %>%
layer_dropout(rate = 0.4) %>%
layer_dense(units = 64, activation = 'tanh') %>%
layer_dropout(rate = 0.3) %>%
layer_dense(units = 32, activation = 'tanh') %>%
layer_dropout(rate = 0.2) %>%
layer_dense(units = 16, activation = 'tanh') %>%
layer_dropout(rate = 0.1) %>%
layer_dense(units = length(unique(data$`1`)), activation = 'softmax')
# Summarize model layers and units
summary(model)
# Compile model
model %>% compile(
loss = 'categorical_crossentropy',
optimizer = optimizer_rmsprop(),
metrics = c('accuracy')
)
# Train model
history <- model %>% fit(
x_train, y_train,
epochs = 100, batch_size = 32,
validation_split = 0.2
)
由于保密问题,我无法显示原始数据表,但它是一个由 7 行和 34 列组成的简单表(只是一个小的模拟块)。
输入 (x_train) 已经标准化和矢量化。这是一个包含行和列的简单表格。
dim(x_train)
结果:
> dim(x_train)
[1] 5 33
但是,如果我尝试训练模型,keras 会打印出这条神秘的错误消息。
Error in py_call_impl(callable, dots$args, dots$keywords) :
ValueError: in user code:
/home/seschlbeck/.local/share/r-miniconda/envs/r-reticulate/lib/python3.6/site- packages/tensorflow/python/keras/engine/training.py:855 train_function *
return step_function(self, iterator)
/home/seschlbeck/.local/share/r-miniconda/envs/r-reticulate/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py:845 step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
/home/seschlbeck/.local/share/r-miniconda/envs/r-reticulate/lib/python3.6/site-packages/tensorflow/python/distribute/distribute_lib.py:1285 run
return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
/home/seschlbeck/.local/share/r-miniconda/envs/r-reticulate/lib/python3.6/site-packages/tensorflow/python/distribute/distribute_lib.py:2833 call_for_each_replica
return self._call_for_each_replica(fn, args, kwargs)
/home/seschlbeck/.local/share/r-miniconda/envs/r-reticulate/lib/python3
我猜这与我的输入形状有关。但我就是想不通为什么... 我已经尝试了以下几种(都不起作用)
dim(x_train)
c(5, 33)
c(None, 5, 33)
dim(x_train)[1]
有人知道我在这里做错了什么吗?任何帮助表示赞赏...
【问题讨论】:
-
所以你无法显示原始数据。您是否考虑过向那些想在发布之前尝试其假定答案的人提供玩具数据?
-
我刚刚添加了原始表格和 x_train(矢量化)的图片。
标签: r dataframe keras input neural-network