Странное поведение в R при вызове fit () pkg keras без as.matrix () - PullRequest
0 голосов
/ 24 апреля 2020

Может кто-нибудь помочь мне понять это? Я использую keras для построения нейронной сети.

Я загрузил CSV-файл с тремя значениями чисел c и меткой в ​​диапазоне от 1 до 4.

Для построения своей нейронной сети я использую следующий код, единственная важная часть где есть: <-------- эта строка </strong> (не удалось выделить код).

data_train <- train.df[,1:3] %>% as.matrix    <-------- this line

# Build the neural network
model <- keras_model_sequential()
model %>%
  layer_dense(units = 10, activation = 'linear', input_shape = c(3)) %>%
  layer_dense(units = 20, activation = 'relu') %>% 
  layer_dense(units = 20, activation = 'tanh') %>% 
  layer_dense(units = 4, activation = 'softmax')

# Compile it
model %>% compile(
  optimizer = 'adam', 
  loss = 'sparse_categorical_crossentropy',
  metrics = c('accuracy'))

# Train it
model %>% fit(data_train %>% as.matrix, train.df[,4], epochs = 100, batch_size=1, validation_split=0.2)  <-------- this line
********* the line above

# Make predictions
predictions <- model %>% predict(test.df[,c(1,2,3)] %>% as.matrix)

Дело в том, , если я не вызываю as.matrix внутри функции, т. е. если я вызываю fit () с использованием:

model %>% fit(data_train, train.df[,4], epochs = 100, batch_size=1, validation_split=0.2)  <-------- this line

, функция выдает следующую ошибку:

Error in py_call_impl(callable, dots$args, dots$keywords) : 
ValueError: No data provided for "dense_28_input". Need data for each key in: ['dense_28_input']

Кажется, что число 28 в 'density_28_input' выше - случайное число, которое меняется в зависимости от исполнения.

Я просто не понимаю, почему это происходит. Объект должен быть матрицей, если я уже вызывал as.matrix раньше.

Это предназначено? Это происходит на вашей машине? Я могу загрузить файл CSV, если кто-то хочет воспроизвести вывод. Вы можете скачать его здесь: https://drive.google.com/open?id=1T8iyt_fUQV51oghv3TUJ7ty_zdHPPjB-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...