r - R 中支持 Callback_Early_Stopping

标签 r tensorflow machine-learning keras typeerror

我正在开发一个使用 Keras 和 Tensorflow 的 R 神经网络项目。我真的很想利用提前停止功能,主要是为了获得最佳权重,但我正在努力绕过错误:“TypeError:'>'在'EarlyStopping'和'float'实例之间不受支持。 ”这里回答了类似的问题:TypeError: '>' not supported between instances of 'NoneType' and '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'

我的数据已转换为数字结构并格式化为矩阵以运行 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 来构建模型,但看起来我无法在没有 float 的情况下构建任何密集层。关于我如何继续前进有什么想法/想法吗?

谢谢!

最佳答案

不知道您是否仍然需要帮助解决此问题,但您需要将提前停止的调用放在列表中,如下所示。

callbacks = list(callback_early_stopping(monitor = "val_acc", patience = 5, restore_best_weights = TRUE))

关于r - R 中支持 Callback_Early_Stopping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63208624/

相关文章:

python - 使用 Tensorflow 调用 copy.deepcopy(network) 时出现 "ValueError: Unknown layer: ... "

tensorflow - 在测试期间重新加载 Keras Tokenizer

tensorflow - Keras 为什么二元分类不如分类分类准确

r - 如何将测试应用到包中与特定命名模式匹配的所有函数?

r - 使用shinyBS包中的bsModal和plotly R的plotly_click在弹出窗口中生成新图

r - 合并具有共同元素的行

python - 如何训练 tensorflow 模型准确区分睁眼和闭眼?

machine-learning - Optimizer.compute_gradients 如何以编程方式计算梯度?

c# - 在没有 PCA 的情况下在多类 svm 中找到正确的特征

r - R 中的交点和多边形