Поддержка Callback_Early_Stopping в R - PullRequest
0 голосов
/ 01 августа 2020

Я работаю над проектом нейронной сети в R, который использует Keras и Tensorflow. Я бы очень хотел использовать функцию ранней остановки, в основном, чтобы получить наилучшие веса, но я изо всех сил пытаюсь обойти ошибку: «TypeError: '>' не поддерживается между экземплярами 'EarlyStopping' и 'float'. " Здесь был ответ на аналогичный вопрос: TypeError: '>' не поддерживается между экземплярами 'NoneType' и 'float' , но все решения находятся в кодировке python. Любая помощь здесь с использованием команд R была бы замечательной!

Вот мой код:

# API model
model <- local({
  input = layer_input(shape = c(44),  name = 'main_input')
  
  layer1 = input %>%
    layer_dense(units = 22, activation = "relu")
  
  layer2 = input %>%
    layer_dense(units = 22, activation = "relu")
  
  output = layer_concatenate(c(layer1, layer2)) %>%
    layer_dense(units = 10, activation = "relu") %>%
    layer_dense(units = 2, activation = "sigmoid")
  
  keras_model(inputs = input, outputs = output)
})

model %>%
  compile(loss = "binary_crossentropy",
          optimizer = 'adam',
          metrics = "accuracy")

history = model %>%
  fit(train,
      trainLabels,
      epoch = 25,
      batch_size = 32,
      validation_split = 0.2)
     callback_early_stopping(monitor = "val_acc", patience = 5, restore_best_weights = TRUE))

#Error in py_compare_impl(a, b, op) : 
  TypeError: '>' not supported between instances of 'EarlyStopping' and 'float'

Мои данные были преобразованы в структуру numeri c и отформатированы в матрице для запуска Команды Keras / Tensorflow. Однако я понимаю, что переменные в моей модели - это float32:

str(train)
 num [1:2594, 1:44] 0.0202 -1.9071 0.0202 0.0202 -1.9071 ...

tail(model$variables)

...

[[5]]
<tf.Variable 'dense_21/kernel:0' shape=(10, 2) dtype=float32, numpy=
array([[-0.79153246,  0.20632687],
       [-0.21896149,  0.02037789],
       [-0.04512246,  0.29801697],
       [-0.46573785,  0.3391741 ],
       [-0.71519893,  0.8290489 ],
       [ 0.82080096, -0.13467254],
       [-0.60803676, -0.5283991 ],
       [ 0.8202912 , -0.89913267],
       [ 0.6229674 , -0.9428901 ],
       [ 1.1776545 , -0.8499227 ]], dtype=float32)>

[[6]]
<tf.Variable 'dense_21/bias:0' shape=(2,) dtype=float32, numpy=array([-0.09607901,  0.09400514], dtype=float32)>

Я также пытался построить модель с «int32», а не с float32, но, похоже, я не могу ничего построить. плотных слоев без поплавка. Есть мысли / идеи о том, как мне двигаться дальше?

Спасибо!

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